Android 6.0 系统支持的传感器多达26种:加速度传感器 (accelerometer)、磁力传感器(magnetic field)、方向传感器(orientation)、陀螺仪(gyroscope)、环境光照传感器(light)、压力传感器(pressure)、温度传感器(temperature)和距离传感器(proximity)等等, Sensor.java 中有相关定义 源码。
Sensor 架构图
主要包括2个进程,服务端和客户端。 Sensor的整体逻辑非常清晰,一个控制流,一个数据流。
1.常规使用流程ref
1.1 常用API
SensorManager:可以通过这个类去创建一个传感器服务的实例,这个类提供的各种方法可以访问传感器列表、注册或解除注册传感器事件监听、获取方位信息等。
Sensor:用于创建一个特定的传感器实例,这个类提供的方法可以让你决定一个传感器的功能。
SensorEvent:系统会通过这个类创建一个传感器事件对象,提供了一个传感器的事件信息,包含一下内容,原生的传感器数据、触发传感器的事件类型、精确的数据以及事件发生的时间。
SensorEventListener:可以通过这个接口创建两个回调用法来接收传感器的事件通知,比如当传感器的值发生变化时。
1.2 使用方式
第一步:获取SensorManager对象
第二步:获取Sensor对象
第三步:注册Sensor对象
第四步:重写onAccuracyChanged,onSensorChanged这两个方法
第五步:注销Sensor对象
public class SensorActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mSensor;
@Override
public final void onCreate(Bundle savedIns