android_G_ALS_PS_sensor_上层到底层流程

android_G_ALS_PS_sensor_上层到底层流程

ID:38248024

大小:199.19 KB

页数:5页

时间:2019-06-06

android_G_ALS_PS_sensor_上层到底层流程_第1页
android_G_ALS_PS_sensor_上层到底层流程_第2页
android_G_ALS_PS_sensor_上层到底层流程_第3页
android_G_ALS_PS_sensor_上层到底层流程_第4页
android_G_ALS_PS_sensor_上层到底层流程_第5页
资源描述:

《android_G_ALS_PS_sensor_上层到底层流程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Sensor包括G–sensorP-sensorAL-sensor等所有手机使用的传感器,都是由sensormanager来管理,APP通过registerlistener与unregisterlistener来注册监听与去监听来使用相应的sensor.通过sensorEvent来读取sensor的数据。从而控制所需要的功能。代码位置在/framework/base/core/java/android/hardware/SensorManager.javaunregisterListener(Ob

2、jectlistener);registerListener(SensorEventListenerlistener,Sensorsensor,intrate,Handlerhandler);传递的SensorEventListener来接收底层传来的数据变化。在注册监听的函数里面会调用将sensorenable函数,如下privatebooleanenableSensorLocked(Sensorsensor,intdelay){booleanresult=false;for(ListenerD

3、elegatei:sListeners){if(i.hasSensor(sensor)){Stringname=sensor.getName();inthandle=sensor.getHandle();result=sensors_enable_sensor(sQueue,name,handle,delay);//JNI调用接口break;}}returnresult;在JNI层,代码位置为/framework/base/core/jni/android_hardware_SensorManag

4、er.cpp代码中。APP通过sensors_data_poll函数来读取event中的数据,对数据进行处理,形成相应的功能。在SensorManager中会打开一个线程一直在调用此函数,查询sensor数据或者状态是否有改变。代码中调用的readwaitForeEvent方法都是在SensorEventQueue中实现的。从JNI调用的打开关闭函数,从代码中可以看到时SensorEventQueue类中的enableDisable方法。再接着往下调用时ISensorEventConnection

5、.cpp中的方法,代码位置在/framework/base/libs/gui/.以上都是client端的层层调用。在android中程序架构使用C-S即客户端(client)—服务端(service)。2者通过BINDER相互连接。在enableDisabLe函数中的remote()->transcact函数就是通过binder将数据传送到service端,这样做的好做,降低程序的低耦合性,使用上层界面更加流程,而不受调用底层功能相关接口的束缚。SensorService.cpp代码位置为:/fr

6、amewore/base/services/sensorservice/其中的sensor->activate(connection.get(),true)函数是调用流程通往底层的接口。代码位置为/framework/base/services/sensorservices/SensorInterface.cpp代码位置/framework/base/services/sensorservices/SensorDevice.cpp在SensorDevice层,在activate函数中会调用到HAL

7、层的sensor的activate函数。Info&info(mActivationCount.editValueFor(handle));int32_t&count(info.count);上面的count是上层不同sensor对应的enable的count,相当于做了保护的功能。记录了上层sensor的打开次数。每个Sensor都有自己的COUNT值,彼此不冲突。C=android_atomic_inc(&count)C=android_atomic_dec(&count)返回之前的后,再将co

8、unt加1或减1操作。以上2个函数是原子操作,对共享内存的操作加的同步措施。代码位置为/mediate/source/hardware/sensor/hwmsen/在HAL首先会调用open-sensors函数在初始化的时候,填充sensors_data_context_t此结构体,这也是上面通过此结构来调用底层的相关接口的,即hwm_activate进行打开与关闭sensor的。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。