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
取消对传感器的监听
从记录中去掉监听者所监听的传感器即可