android中传感器的学习

关于Sensor有关键的三个类:Sensor,SensorManger,SensorEventListener(是一个监听接口)

 

在Sensor类中可以看到android中定义的所有支持的传感器:

Constants
int TYPE_ACCELEROMETER A constant describing an accelerometer sensor type.                // 加速表传感器
int TYPE_ALL A constant describing all sensor types.                     // 周边温度传感器 api level 14以上支持
int TYPE_AMBIENT_TEMPERATURE A constant describing an ambient temperature sensor type           // 温度传感器
int TYPE_GRAVITY A constant describing a gravity sensor type.                    // 重力传感器,api level 9以上支持
int TYPE_GYROSCOPE A constant describing a gyroscope sensor type                 // 陀螺仪传感器
int TYPE_LIGHT A constant describing an light sensor type.                   // 光线传感器
int TYPE_LINEAR_ACCELERATION A constant describing a linear acceleration sensor type.             // 直线加速度传感器 api level 9以上支持
int TYPE_MAGNETIC_FIELD A constant describing a magnetic field sensor type.               // 地磁传感器
int TYPE_ORIENTATION This constant is deprecated. use SensorManager.getOrientation() instead.     
int TYPE_PRESSURE A constant describing a pressure sensor type                 // 压力传感器
int TYPE_PROXIMITY A constant describing an proximity sensor type.                // 近距传感器(打电话过程中结合光线传感器自动关闭屏幕使用)
int TYPE_RELATIVE_HUMIDITY A constant describing a relative humidity sensor type.                
int TYPE_ROTATION_VECTOR A constant describing a rotation vector sensor type.
int TYPE_TEMPERATURE This constant is deprecated. use Sensor.TYPE_AMBIENT_TEMPERATURE instead.    // 温度传感器

 

得到一个Sensor对象的步骤:

  1.SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);

  2.Sensor sensor = _sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);  // 参数从上表中选择

注册SensorEvent监听器:

  sm.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);  

  第二个参数是灵敏度,系统中定义了几个:

int SENSOR_DELAY_FASTEST get sensor data as fast as possible
int SENSOR_DELAY_GAME rate suitable for games
int SENSOR_DELAY_NORMAL rate (default) suitable for screen orientation changes
int SENSOR_DELAY_UI rate suitable for the user interface

  注意:注册监听器后当程序不再需要监听时要取消监听,因为系统不会自动将其取消,这样对电池损耗很大,所以最好在onPause函数中取消监听。

posted @ 2012-05-29 23:06  wangvsa  阅读(483)  评论(0编辑  收藏  举报