Android Sensors (1) 传感器概览
Android传感器概览
Android平台支持三大类传感器:
1.运动传感器
这类传感器测量沿着三个轴向的加速度和角加速度(旋转力),这类传感器包括加速度计、重力传感器、陀螺仪、旋转向量传感器。
2.环境传感器
这类传感器测量各种环境参数,如环境空气温度、气压、照明、潮湿度等。此类别包括气压计,光度计,温度计。
3.位置传感器
位置传感器测量设备的物理位置,包括方向传感器和磁力计。
也可以把传感器分为基于硬件的(Hardware-based)和基于软件的(Software-based);其中前者是设备上的物理组件,后者不是物理装置。
基于软件的传感器从一个或多个硬件传感器中获取数据,然后模拟传感器的行为,所以有时候又把它们称为虚拟传感器或人工合成的传感器(virtual sensors or synthetic sensors)。
比如直线加速度传感器和重力传感器就是基于软件的传感器的例子:
http://developer.android.com/guide/topics/sensors/sensors_overview.html
上述链接中的表1罗列了Android平台所支持的传感器。
Sensor framework
使用Android的sensor framework,你可以访问设备上可用的传感器,获取传感器原始数据。
比如,你可以用sensor framework做这些事:
1.查看设备上可用的传感器。
2.查看某一个传感器的性能,比如它的量程、分辨率、能量要求等。
3.获取测量数据,并且设置刷新频率。
4.注册和注销传感器事件监听器。
Sensor framework是android.hardware这个包的一部分,包含下面一些重要的类:
创建sensor service的实例,即创建一个SensorManager 类的对象。(调用 Context.getSystemService() 并且传入参数SENSOR_SERVICE),这个类包含了各种方法,获取设备上的传感器,注册和注销传感器事件监听等。这个类也提供了一些传感器常量,用于报告传感器的精度、设置数据获取频率和校正传感器等。
这个类用于创建一个特定传感器的实例。
这个类提供了各种方法,让你获取传感器的性能参数。
系统用这个类去创建传感器事件对象,用于提供一个传感器事件的信息。
一个传感器事件对象包含下列信息:原始传感器数据,传感器的类型,数据的准确性,事件的时间戳。
你可以利用这个接口创建两个回调函数:一个是精度改变时收到通知onAccuracyChanged();另一个是传感器的值改变时收到通知onSensorChanged()。
典型应用
在一个典型的应用中,你用这些传感器相关的API主要做两项基本的工作:
1.识别传感器和传感器能力
如果你的应用有一些特性要依赖特定的传感器类型或性能,在运行时识别传感器和其性能是很有用的。
比如,你可以查看设备上所有的传感器,如果一些特性需要的传感器不存在,则关闭这些特性。
类似的,也可以在特定类型的传感器(可能有多个)中选择一种实现,让它在你的应用中发挥最好的性能。
2.监听传感器事件
监听传感器事件是你获取传感器数据的方法。
当传感器所测量的参数变化时就发生一次传感器事件。
如上文所述,一个传感器事件对象包含下列信息:传感器数据,传感器的类型(触发这个事件的传感器名),数据的准确性,事件的时间戳。
参考资料
API Guides:Sensors Overview
http://developer.android.com/guide/topics/sensors/sensors_overview.html