您的位置:首页 > 移动开发 > Android开发

Android 传感器应用开发

2014-01-08 11:27 399 查看
1、获取真机的Sensor管理器

private SensorManager mSensorManager;
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);


2、为系统的传感器注册监听器

// 为系统的加速度传感器注册监听器
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_GAME);
// 为系统的方向传感器注册监听器
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_GAME);
// 为系统的磁场传感器注册监听器
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
SensorManager.SENSOR_DELAY_GAME);
// 为系统的温度传感器注册监听器
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE),
SensorManager.SENSOR_DELAY_GAME);
// 为系统的光传感器注册监听器
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),
SensorManager.SENSOR_DELAY_GAME);
// 为系统的压力传感器注册监听器
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE),
SensorManager.SENSOR_DELAY_GAME);


3、在onSensorChanged方法中得到传感器的值

public void onSensorChanged(SensorEvent event)
{
float[] values = event.values;
// // 真机上获取触发event的传感器类型
int sensorType = event.sensor.getType();
// 模拟器上获取触发event的传感器类型
//		int sensorType = event.type;
StringBuilder sb = null;
// 判断是哪个传感器发生改变
switch (sensorType)
{

// 加速度传感器
case Sensor.TYPE_ACCELEROMETER:
sb = new StringBuilder();
sb.append("X方向上的加速度:");
sb.append(values[0]);
sb.append("\nY方向上的加速度:");
sb.append(values[1]);
sb.append("\nZ方向上的加速度:");
sb.append(values[2]);
accelerometer.setText(sb.toString());
// 方向传感器
case Sensor.TYPE_ORIENTATION:
sb = new StringBuilder();
sb.append("绕Z轴转过的角度:");
sb.append(values[0]);
sb.append("\n绕X轴转过的角度:");
sb.append(values[1]);
sb.append("\n绕Y轴转过的角度:");
sb.append(values[2]);
etOrientation.setText(sb.toString());
break;
// 磁场传感器
case Sensor.TYPE_MAGNETIC_FIELD:
sb = new StringBuilder();
sb.append("X方向上的角度:");
sb.append(values[0]);
sb.append("\nY方向上的角度:");
sb.append(values[1]);
sb.append("\nZ方向上的角度:");
sb.append(values[2]);
etMagnetic.setText(sb.toString());
break;
// 温度传感器
case Sensor.TYPE_TEMPERATURE:
sb = new StringBuilder();
sb.append("当前温度为:");
sb.append(values[0]);
etTemerature.setText(sb.toString());
break;
// 光传感器
case Sensor.TYPE_LIGHT:
sb = new StringBuilder();
sb.append("当前光的强度为:");
sb.append(values[0]);
etLight.setText(sb.toString());
break;
// 压力传感器
case Sensor.TYPE_PRESSURE:
sb = new StringBuilder();
sb.append("当前压力为:");
sb.append(values[0]);
etPressure.setText(sb.toString());
break;
}
}


4、取消监听器

mSensorManager.unregisterListener(this);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android 传感器