Android传感器应用开发
Android系统提供了对传感器的支持,如果手机设备的硬件提供了这些传感器,Android应用可以通过传感器来获取设备的外界条件。
利用Android的传感器
开发传感器应用的步骤如下所示:
- 调用Context的getSystemService(Context.SENSOR_SERVICE)方法获取SensorManager对象,SensorManager对象代表系统的传感器管理服务。
- 调用SensorManager的getDefaultSensor(int type)方法来获取指定类型的传感器。
- 通常选择在Activity的onResume()方法中调用SensorManager的registerListener()方法为指定传感器注册监听器,程序通过实现监听器即可获取传感器传回来的数据。
SensorManager提供的注册传感器的方法是registerListener(SensorEventListener listener , Sensor sensor , int rate),这个方法的三个参数说明如下:
- listener:监听传感器事件的监听器。该监听器需要实现SensorEventListener接口。
- sensor:传感器对象。
- rate:指定获取传感器数据的频率。
rate支持如下几个频率值:
- SensorManager.SENSOR_DELAY_FASTEST:最快。延迟最小,只有特别依赖于传感器数据的应用推荐采用这种频率,这种模式可能造成手机电量大量消耗。由于传递的为原始数据,算法处理不好将会影响应用的性能。
- SensorManager.SENSOR_DELAY_GAME:适合游戏的频率。一般有实时性要求的应用适合使用这种频率。
- SensorManager.SENSOR_DELAY_NORMAL:正常频率。一般对实时性要求不是特别高的应用适合使用这种频率。
- SensorManager.SENSOR_DELAY_UI:适合普通用户界面的频率。这种模式比较省电,而且系统开销很小,但延迟较大,因此只适用在普通小程序中。
Android的常用传感器
1.方向传感器
方向传感器用于感应手机设备的摆放状态。方向传感器可以返回三个角度,三个角度的说明如下:
- 第一个角度:表示手机顶部朝向与正北方的夹角。当手机绕着Z轴旋转时,该角度值发生改变。
- 第二个角度:表示手机顶部或尾部翘起的角度。当手机绕着X轴倾斜时,该角度发生变化,该角度的取值范围时-180~180度。
- 第三个角度:表示手机左侧或右侧翘起的角度。当手机绕着Y轴倾斜时,该角度值发生变化,该角度的取值范围是-90~90度。
2.陀螺仪传感器
陀螺仪传感器用于感应手机设备的旋转速度。陀螺仪传感器可以返回设备绕X、Y、Z三个坐标轴的旋转速度。旋转速度的单位是弧度/秒,旋转速度为正值代表逆时针旋转,负值代表顺时针旋转。
陀螺仪传感器返回的三个角速度说明如下:
- 第1个值:代表该设备绕X轴旋转的角速度。
- 第2个值:代表该设备绕Y轴旋转的角速度。
- 第3个值:代表该设备绕Z轴旋转的角速度。
3.磁场传感器
磁场传感器主要用于读取手机设备外部的磁场强度。该传感器返回的三个数据,分别代表周围磁场分解到X、Y、Z三个方向上的磁场分量,磁场数据的单位是微特斯拉。
4.重力传感器
重力传感器会返回一个三维向量,可以显示重力的方向和强度。
5.线性加速度传感器
线性加速度传感器返回一个三维向量显示设备在各个方向上的加速度。
线性加速度传感器、重力传感器、加速度传感器三者关系如下:
加速度传感器 = 重力传感器 + 线性加速度传感器
6.温度传感器
温度传感器用于获取手机设备所处环境的温度、温度传感器返回一个数据代表手机设备周围的温度。
7.光传感器
光传感器用于获取手机设备所处环境的光的强度。光传感器会返回一个数据,代表手机设备周围的光的强度。
8.压力传感器
压力传感器用于获取手机设备所处环境的压力的大小。压力传感器会返回一个数据,代表手机设备周围的压力的大小。
9.心率传感器(Android 5.0新增)
心率传感器用于获取佩戴该设备的人每分钟的心跳次数。
网友评论