android_G_ALS_PS_sensor_上层到底层流程
更新时间:2024-06-10 05:14:01 阅读量: 综合文库 文档下载
Sensor包括 G –sensor P-sensor AL-sensor等所有手机使用的传感器,都是由sensormanager 来管理,APP 通过registerlistener 与unregisterlistener 来注册监听 与去监听来使用相应的sensor.通过sensor Event 来读取sensor 的数据。从而控制所需要的功能。 代码位置在 /framework/base/core/java/android/hardware/SensorManager.java
unregisterListener(Object listener);
registerListener(SensorEventListener listener, Sensor sensor, int rate, Handler handler); 传递的SensorEventListener 来接收底层传来的数据变化。在注册监听的函数里面会调用将sensor enable 函数,如下
private boolean enableSensorLocked(Sensor sensor, int delay) { boolean result = false;
for (ListenerDelegate i : sListeners) { if (i.hasSensor(sensor)) {
String name = sensor.getName(); int handle = sensor.getHandle();
result = sensors_enable_sensor(sQueue, name, handle, delay);//JNI 调用接口
break; } }
return result;
在JNI 层 ,代码位置为/framework /base/core/jni/ android_hardware_SensorManager.cpp 代码中。
APP 通过 sensors_data_poll 函数 来读取event中的数据,对数据进行处理,形成相应的功能。 在 SensorManager中会打开一个线程一直在调用此函数,查询sensor数据或者状态是否有改变。代码中调用的read waitForeEvent 方法都是在SensorEventQueue 中实现的。
从JNI调用的打开关闭函数,从代码中可以看到时SensorEventQueue 类中的enable Disable 方法。
再接着往下调用时ISensorEventConnection.cpp中的方法,代码位置在/framework/base/libs/gui/.
以上都是client端的层层调用。 在android中程序架构使用C-S 即 客户端(client)—服务端(service)。2者通过BINDER 相互连接。在enableDisabLe函数中的 remote()->transcact 函数 就是通过binder 将数据传送到service端,这样做的好做,降低程序的低耦合性,使用上层界面更加流程,而不受调用底层功能相关接口的束缚。
SensorService.cpp
代码位置为:/framewore/base/services/sensorservice/
其中的sensor->activate(connection.get(), true)函数是调用流程通往底层的接口。
代码位置为/framework/base/services/sensorservices/SensorInterface.cpp
代码位置/framework/base/services/sensorservices/SensorDevice.cpp
在SensorDevice层, 在activate函数中会调用到 HAL层的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)
返回之前的后,再将count加1 或减1 操作。
以上2个函数是原子操作,对共享内存的操作加的同步措施。
代码位置为/mediate/source/hardware/sensor/hwmsen/ 在HAL 首先会调用open-sensors函数 在初始化的时候,填充sensors_data_context_t此结构体,这也是上面通过此结构来调用底层的相关接口的, 即 hwm_activate 进行打开与关闭sensor 的。
正在阅读:
android_G_ALS_PS_sensor_上层到底层流程06-10
烟草企业文化项目建议书南通【厦门达人】07-19
全新版大学英语(第二版)综合教程2 - 课后习题之翻译和作文11-17
工程监理在控制工程造价中的作用03-14
乡镇旅游办公室工作总结范文11-28
2013年人教八年级上英语单词(第十课)05-29
2003-2010年行测历年试题及答案(已调版,可直接打印)05-05
工程造价控制试卷03-23
- 1android系统按键从linux到java流程
- 2Connected Sensor Cover Self-Organization of Sensor Networks for Efficient Query Execution
- 3Connected Sensor Cover Self-Organization of Sensor Networks for Efficient Query Execution
- 4一票到底 - 感受“流程再造”中的海尔
- 5Delphi接口的底层实现
- 6层流净化手术室 - 图文
- 7短信发送流程图形剖析(含编码)Android平台
- 8PS人像后期处理的大致流程是怎样的?
- 9短信发送流程图形剖析(含编码)Android平台
- 10INTEGRATION AND EVALUATION OF SENSOR MODALITIES FOR POLAR RO
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 层流
- 上层
- android
- 到底
- sensor
- ALS
- PS