2013-07-02

Android 中传感器的种类

加速度,Sensor.TYPE_ACCELEROMETER

陀螺仪,Sensor.TYPE_GYROSCOPE

亮度,Sensor.TYPE_LIGHT

地磁,Sensor.TYPE_MAGNETIC_FIELD

方向,Sensor.TYPE_ORIENTATION

压力,Sensor.TYPE_PRESSURE

近程,Sensor.TYPE_PROXIMITY

温度,Sensor.TYPE_TEMPERATURE

Android 中传感器的功能

SensorManager 是所有传感器的一个综合管理类,包括了传感器的种类、采样率、精准度等。

// 得到一个SensorManager对象

SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

// 得到传感器列表

List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ORIENTATION);

// 注册传感器

boolean result = mSensorManager.registerListener(this, sensors, SensorManager.SENSOR_DELAY_FASTEST);

// 卸载传感器

mSensorManager.unregisterListener(this);

// SensorEventListener有两个接口方法

// 在传感器值更改时调用

onSensorChanged(SensorEvent event);

// SensorEvent 对象包括一组浮点数

float x = event.values[SensorManager.DATA_X];

float y = event.values[SensorManager.DATA_Y];

float z = event.values[SensorManager.DATA_Z];

// 在传感器的精准度发生改变时调用

// 参数accuracy表示传感器新的准确值

onAccuracyChanged(Sensor sensor, int accuracy);

示例:

public class SensorActivity extends Activity implements SensorEventListener {

private boolean mRegisteredSensor;

private SensorManager mSensorManager;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mRegisteredSensor = false;

mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

}

protected void onResume() {

super.onResume();

List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ORIENTATION);

if(sensors.size() > 0) {

mRegisteredSensor = mSensorManager.registerListener(this, sensors.get(0), SensorManager.SENSOR_DELAY_FASTEST);

}

}

protected void onPause() {

if(mRegisteredSensor){

mSensorManager.unregisterListener(this);

mRegisteredSensor = false;

}

super.onPause();

}

public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

public void onSensorChanged(SensorEvent event) {

if(event.sensor.getType() == Sensor.TYPE_ORIENTATION) {

float x = event.values[SensorManager.DATA_X];

float y = event.values[SensorManager.DATA_Y];

float z = event.values[SensorManager.DATA_Z];

}

}

}

SensorManager 常用方法

getDefaultSensor, 得到默认的传感器对象

getInclination, 得到地磁传感器倾斜角的弧度数

getOrientation, 得到设备旋转的方向

getSensorList, 得到指定传感器的列表

更多相关文章

  1. Android下调用传感器
  2. Android硬件之传感器
  3. Android Sensor传感器系统架构初探
  4. Android系统移植与调试之------->Android Sensor传感器系统架构
  5. Android 利用方向传感器实现 指南针

随机推荐

  1. 编译cubieboard android 源码过程详解之(
  2. 保存和重入Activity 状态的最简单方法
  3. Android(安卓)Jetpack之LiveData源码分析
  4. Android(安卓)自动更新 + IIS7 添加APK m
  5. Android(安卓)事件处理
  6. 【Android】View类详解 (游戏开发必备)
  7. Android-Task Affinity
  8. Android自带音乐播放器专辑图片相同的问
  9. 使用Manifest Editor
  10. 用android studio写一个简单的计算器