Sensor框架Framework层解读

【Android】Sensor框架Framework

层解读

Sensor整体架构

整体架构说明

1. 黄色部分表示硬件,它要挂在I2C总线上

2. 红色部分表示驱动,驱动注册到Kernel的Input Subsystem上,然后通过Event Device把

Sensor数据传到HAL层,准确说是HAL从Event读

3. 绿色部分表示动态库,它封装了整个Sensor的IPC机制,如SensorManager是客户端,

SensorService是服务端,而HAL部分是封装了服务端对Kernel的直接访问 4. 蓝色部分就是我们的Framework和Application了,JNI负责访问Sensor的客户端,而

Application就是具体的应用程序,用来接收Sensor返回的数据,并处理实现对应的UI效果,如屏幕旋转,打电话时灭屏,自动调接背光(这三个功能的具体实现会在以后分析)

Sensor总体调用关系图 本节主要解读Android的Framework层框架。 Sensor 框架分为三个层次,客户度、服务端、HAL层,服务端负责从HAL读取数据,并将数据写到管道中,客户端通过管道读取服务端数据。 客户端主要类 SensorManager.java 从android4.1开始,把SensorManager定义为一个抽象类,定义了一些主要的方法,该类主要是应用层直接使用的类,提供给应用层的接口

SystemSensorManager.java

继承于SensorManager,客户端消息处理的实体,应用程序通过获取其实例,并注册监听接口,获取sensor数据。

sensorEventListener接口 用于注册监听的接口 sensorThread

是SystemSensorManager的一个内部类,开启一个新线程负责读取读取sensor数据,当注册了sensorEventListener接口的时候才会启动线程

android_hardware_SensorManager.cpp

负责与java层通信的JNI接口 SensorManager.cpp

sensor在Native层的客户端,负责与服务端SensorService.cpp的通信

SenorEventQueue.cpp

消息队列

服务端主要类

SensorService.cpp 服务端数据处理中心 SensorEventConnection

从BnSensorEventConnection继承来,实现接口ISensorEventConnection的一些方法,ISensorEventConnection在SensorEventQueue会保存一个指针,指向调用服务接口创建的SensorEventConnection对象

Bittube.cpp

在这个类中创建了管道,用于服务端与客户端读写数据

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4