Android传感器源码学习

								Android传感器源码学习

系统中,传感器系统的Java部分的实现文件路径

在这里插入图片描述
系统中,传感器系统的Frameworks层的代码路径

在这里插入图片描述

系统中,传感器系统的JNI部分的代码路径

文件android_hardware_SensorManager.cpp的功能是实现文件SensorManager.java中的Native函数,通过调用SensorManager.cpp和SensorEventQueue.cpp中的相关类来完成相关工作。

在这里插入图片描述

nativeClassInit():在JNI层得到android.hardware.Sensor的JNI环境指针。

sensors_module_init():通过JNI调用本地框架,得到SensorService,SensorService初始化控制流各功能。

new Sensor():建立一个Sensor对象,具体可查阅官方网站API android.hardware.Sensor。

sensors_moudle_get_next_sensor():上层得到设备支持的所有Sensor,并放入SensorList链表。

new SensorThread():创建Sensor线程,当应用程序registerListener()注册监听器开启线程run(),没有数据变化时线程会阻塞。

SensorManager.cpp提供了对传感器数据部分的操作,实现了“sensor_data_XXXX()”格式的函数。在Native层的客户端,文件SensorManager.cpp还负责与服务端SensorService.cpp之间的通信工作。

在这里插入图片描述

系统中通过SensorSevice.cpp封装了HAL层的代码

在这里插入图片描述

·获取sensor列表(getSensorList)

·获取sensor时间(poll)

·Enable或Disable sensor(activate)

·设置delay时间

在Android的传感器系统中SensorEventQueue.cpp实现了处理消息队列的功能。此文件能够在创建其实例时传入SensorEventConnection的实例,SensorEventConnection继承自ISensorEventConnection。SensorEventConnection其实是客户端调用SensorService的createSensorEventConnection()方法创建的,是客户端与服务端沟通的桥梁。

在这里插入图片描述

·获取管道的句柄

·往管道读写数据

·通知服务端对Sensor可使用

系统中,HAL层提供了Android独立于具体硬件的抽象接口

在这里插入图片描述

具体实现文件需要开发者个人编写,具体可参考:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值