1、Android中支持的Snesor种类
Sensor 说明 Sensor.TYPE_ACCELEROMETER 加速度感应检测 Sensor.TYPE_MAGNETIC_FIELD 磁场感应检测 Sensor.TYPE_ORIENTATION 方位感应检测 Sensor.TYPE_GYROSCOPE 回转仪感应检测 Sensor.TYPE_LIGHT 亮度感应检测 Sensor.TYPE_PRESSURE 压力感应检测 Sensor.TYPE_TEMPERATURE 温度感应检测 Sensor.TYPE_PROXIMITY 接近感应检测
2、Android感应检测管理----SensorManager
感应检测功能:
1、取得SensorManager
使用感应检测Sensor首要先获取感应设备的检测信号,你可以调用Context.getSysteService(SENSER_SERVICE)方法来取得感应检测的服务
2、实现取得感应检测Sensor状态的监听功能
实现以下两个SensorEventListener方法来监听,并取得感应检测Sensor状态:
//在感应检测到Sensor的精密度有变化时被调用到。 public void onAccuracyChanged(Senso sensor,int accuracy); //在感应检测到Sensor的值有变化时会被调用到。 public void onSensorChanged(SensorEvent event);
3、实现取得感应检测Sensor目标各类的值实现下列getSensorList()方法来取得感应检测Sensor的值;
List<Sensor> sensors = sm.getSensorList(Sensor.TYPE_TEMPERATURE);
4、注册SensorListenersm.regesterListener(SensorEventListener listener, Sensor sensor, int rate);
第一个参数:监听Sensor事件,第二个参数是Sensor目标种类的值,第三个参数是延迟时间的精度密度。延迟时间的精密度参数如下:
参数 延迟时间 SensorManager.SENSOR_DELAY_FASTEST 0ms SensorManager.SENSOR_DELAY_GAME 20ms SensorManager.SENSOR_DELAY_UI 60ms SensorManager.SENSOR_DELAY_NORMAL 200ms
因为感应检测Sensor的服务是否频繁和快慢都与电池参量的消耗有关,同时也会影响处理的效率,所以兼顾到消耗电池和处理效率的平衡,设置感应检测Sensor的延迟时间是一门重要的学问,需要根据应用系统的需求来做适当的设置。
感应检测Sensor的硬件检测组件收不同的厂商提供。你可以采用Sensor的getVendor(),Sensor()的getName()和Sensor的getVeesrion()方法来取得 厂商的名称、产品和产品版本。
5、取消注册
sm.unregisterListener(SensorEventListener listener)
加速度感应检测——Accelerometer
Accelerometer Sensor测量的是所有施加在设备上的力所产生的加速度的负值(包括重力加速度)。加速度所使用的单位是m/sec^2,数值是加速度的负值。
SensorEvent.values[0]:加速度在X轴的负值
SensorEvent.values[1]:加速度在Y轴的负值
SensorEvent.values[2]:加速度在Z轴的负值
例如:
当手机Z轴朝上平放在桌面上,并且从左到右推动手机,此时X轴上的加速度是正数。
当手机Z轴朝上静止放在桌面上,此时Z轴的加速度是+9.81m/sec^2。
当手机从空中自由落体,此时加速度是0