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这个包的一部分,包含下面一些重要的类:

  SensorManager

  创建sensor service的实例,即创建一个SensorManager 类的对象。(调用 Context.getSystemService() 并且传入参数SENSOR_SERVICE),这个类包含了各种方法,获取设备上的传感器,注册和注销传感器事件监听等。这个类也提供了一些传感器常量,用于报告传感器的精度、设置数据获取频率和校正传感器等。

  Sensor

  这个类用于创建一个特定传感器的实例。

  这个类提供了各种方法,让你获取传感器的性能参数。

  SensorEvent

  系统用这个类去创建传感器事件对象,用于提供一个传感器事件的信息。

  一个传感器事件对象包含下列信息:原始传感器数据,传感器的类型,数据的准确性,事件的时间戳。

  SensorEventListener

  你可以利用这个接口创建两个回调函数:一个是精度改变时收到通知onAccuracyChanged();另一个是传感器的值改变时收到通知onSensorChanged()

 

典型应用

  在一个典型的应用中,你用这些传感器相关的API主要做两项基本的工作:

  1.识别传感器和传感器能力

  如果你的应用有一些特性要依赖特定的传感器类型或性能,在运行时识别传感器和其性能是很有用的。

  比如,你可以查看设备上所有的传感器,如果一些特性需要的传感器不存在,则关闭这些特性。

  类似的,也可以在特定类型的传感器(可能有多个)中选择一种实现,让它在你的应用中发挥最好的性能。

  2.监听传感器事件

  监听传感器事件是你获取传感器数据的方法。

  当传感器所测量的参数变化时就发生一次传感器事件。

  如上文所述,一个传感器事件对象包含下列信息:传感器数据,传感器的类型(触发这个事件的传感器名),数据的准确性,事件的时间戳。

 

 

参考资料

  API Guides:Sensors Overview

  http://developer.android.com/guide/topics/sensors/sensors_overview.html

 

posted @ 2013-03-12 01:07  圣骑士wind  阅读(2225)  评论(0编辑  收藏  举报