[Android]_ch11.9_感應器元件整合
package com.derek.ch30_sensor1;
import android.R.integer;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tv1;
SensorManager sensorManager;
SensorEventListener listener,listener1,listener2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1=(TextView)findViewById(R.id.textView1);
sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);
listener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
Sensor sensor=event.sensor;
StringBuilder sb=new StringBuilder("Sensor訊息如下:\n");
sb.append("Sensor名稱:"+sensor.getName()+"\n");
sb.append("Sensor類型:"+sensor.getType()+"\n");
sb.append("Sensor耗電:"+sensor.getPower()+"\n");
sb.append("X、Y、Z內容如下:\n");
float values[]=event.values;
for(int i=0;i<values.length;i++){
sb.append("values["+i+"]="+values[i]+"\n");
}
sb.append("X="+values[0]+"\n");
sb.append("Y="+values[1]+"\n");
sb.append("Z="+values[2]+"\n");
tv1.setText(sb);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
};
listener1=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
Sensor sensor=event.sensor;
StringBuilder sb=new StringBuilder("Sensor訊息如下:\n");
sb.append("Sensor名稱:"+sensor.getName()+"\n");
sb.append("Sensor類型:"+sensor.getType()+"\n");
sb.append("Sensor耗電:"+sensor.getPower()+"\n");
float values[]=event.values;
sb.append("距離:"+values[0]+"\n");
if(values[0]<1.0)
sb.append("距離很近...");
else
sb.append("距離還很遠...");
tv1.setText(sb);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
};
listener2=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
Sensor sensor=event.sensor;
StringBuilder sb=new StringBuilder("Sensor訊息如下:\n");
sb.append("Sensor名稱:"+sensor.getName()+"\n");
sb.append("Sensor類型:"+sensor.getType()+"\n");
sb.append("Sensor耗電:"+sensor.getPower()+"\n");
float values[]=event.values;
sb.append("照度:"+values[0]+"\n");
if(values[0]>3000)
sb.append("光線充足,不需開燈!");
else
sb.append("光線不足...注意眼睛!");
tv1.setText(sb);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
};
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
String items[]={"加速度感應器","距離感應器","亮度感應器"};
DialogInterface.OnClickListener OCL=new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch(which){
case 0:
sensorManager.registerListener(
listener,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
sensorManager.SENSOR_DELAY_UI);
break;
case 1:
sensorManager.registerListener(
listener1,
sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY),
sensorManager.SENSOR_DELAY_UI);
break;
case 2:
sensorManager.registerListener(
listener2,
sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),
sensorManager.SENSOR_DELAY_UI);
break;
}
}
};
new AlertDialog.Builder(MainActivity.this)
.setTitle("選擇感應器")
.setIcon(R.drawable.ic_launcher)
.setItems(items, OCL)
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
})
.setCancelable(false)
.show();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
sensorManager.unregisterListener(listener);
}
}
沒有留言:
張貼留言