copy from : http://blog.csdn.net/u013983194/article/details/72123143
版权声明: 作者:alex wang版权:本文版权归作者和CSDN共有 转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢 要求:未经作者同意,请保留此段声明;在文章中给出原文连接;否则必究法律责任
app注册传感器监听
在上一篇我们就已经写了一点关于app是如何拿到acc sensor的一些demo code。那么这边再一次为大家解释一下这个过程。
这点我们从app注册sensor监听开始,注册工作是有SystemSensorManager类的RegisterListener方法来完成
如下图
那么我们还可以看一下使能sensor与设置延时值的调用关系
建立service与manager的链接
建立链接的调用过程
SystemSensorManger进入循环
当建立好链接,那么下面就是要进行数据上报了。通过sensorevent得到值
SensorEvent的处理
sensorservice在sensormanger的初始化的过程中就已经进入threadloop,但是因为所有传感器还处于disable的状态,故一直处于 poll SensorEvent未返回的状态
在SystemSensorManager开始注册传感器监听后,相应的传感器被enable,开始上报SensorEvnet,SensorService的threadloop中也就开始了循环poll SensorEvent并处理了。
sensor传递的整体流程如下:
那么它所传递数据格式如下:
sensorEvent的传递方式
sensorservice线程循环读取HAL层数据
systemsensormanager线程循环处理事情
listenerDelegate处理sensorEvent
取消对传感器的监听
从记录中去掉监听者所监听的传感器即可