文档详情

Sensor框架Framework层解读.docx

发布:2017-03-21约字共37页下载文档
文本预览下载声明
【Android】Sensor框架Framework层解读Sensor整体架构 整体架构说明黄色部分表示硬件,它要挂在I2C总线上红色部分表示驱动,驱动注册到Kernel的Input Subsystem上,然后通过Event Device把Sensor数据传到HAL层,准确说是HAL从Event读绿色部分表示动态库,它封装了整个Sensor的IPC机制,如SensorManager是客户端,SensorService是服务端,而HAL部分是封装了服务端对Kernel的直接访问蓝色部分就是我们的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 在这个类中创建了管道,用于服务端与客户端读写数据 SensorDevice 负责与HAL读取数据HAL层 Sensor.h是google为Sensor定义的Hal接口,单独提出去?客户端读取数据调用时序图 apk注册监听器SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); Sensor mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); protected void onResume() { super.onResume(); mSensorManager. registerListenerImpl (this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); } protected void onPause() { super.onPause(); mSensorManager.unregisterListener(this); } public interface SensorEventListener { public void onSensorChanged(SensorEvent event); public void onAccuracyChanged(Sensor sensor, int accuracy);}View Code Activity实现了SensorEventListener接口。 在onCreate方法中,获取SystemSensorManager,并获取到加速传感器的Sensor; 在onResume方法中调用SystemSensorManager,registerListenerImpl注册监听器; 当Sensor数据有改变的时候将会回调onSensorCha
显示全部
相似文档