Android Sensor传感器系统架构初探

Android Sensor传感器系统架构初探

ID:42577339

大小:498.47 KB

页数:11页

时间:2019-09-18

Android Sensor传感器系统架构初探_第1页
Android Sensor传感器系统架构初探_第2页
Android Sensor传感器系统架构初探_第3页
Android Sensor传感器系统架构初探_第4页
Android Sensor传感器系统架构初探_第5页
资源描述:

《Android Sensor传感器系统架构初探》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、AndroidSensor传感器系统架构初探分类:Android系统2010-10-1510:195438人阅读评论(16)收藏举报1.体系结构2.数据结构3.四大函数本文以重力感应器装置G-sensor为例探索Android的各层次结构。1.体系结构    Android的体系结构可分为4个层次。·第一层次 底层驱动层,包括标准Linux,Android核心驱动,Android相关设备驱动,G-sensor的设备驱动程序即存在于此·第二层次Android标准C/C++库,包括硬件抽象层,Android各底层库,本地库,JNI·

2、第三层次AndroidJavaFramwork框架层·第四层次Java应用程序本文重点关注硬件抽象层,JNI以及Framework。1.1硬件抽象层     硬件抽象层通过例如open(),read(),write(),ioctl(),poll()等函数调用的方式,与底层设备驱动程序进行交互,而这些函数调用是底层设备驱动程序事先准备好的。      用于交互的关键是文件描述符fd,fd通过open()打开G-sensor设备节点而得到,即fd=open("/dev/bma220",O_RDONLY);而/dev/bma220这个

3、设备节点是在底层设备驱动中注册完成的。     其他的函数调用如read(),write()等都通过该文件描述符fd对G-sensor设备进行操作。1.2JNI(JavaNativeInterface)     JNI层可以认为是整个体系结构中的配角,概括地讲,它就完成了一项任务,既实现从C++语言到Java语言的转换。JNI层为JavaFramework层提供一系列接口,而这些接口函数的具体实现中,利用例如module->methods->open(),sSensorDevice->data_open(), sSensorDe

4、vice->poll()等回调函数与硬件抽象层进行交互。而这些open(),poll()回调函数在硬件抽象层中具体实现。1.3JavaFramework     Framework层提供各种类和类的对象,可作为系统的守护进程运行,也可供上层应用程序的使用。     例如类SensorManager,它作为系统的守护进程在初始化的时候开始运行,其子类SensorThread中的子类SensorThreadRunnable通过sensors_data_poll()实现了对G-sensor数据的轮训访问,而sensors_data_p

5、oll()通过JNI层转换到硬件抽象层去具体实现poll()。2数据结构    一般境况下,硬件抽象层对硬件的描述都分为control和data两大类。2.1sensors_control_context_tstructsensors_control_context_t{   structsensors_control_device_tdevice;   intfd;};structsensors_control_device_t{   structhw_device_tcommon;    int(*open_data_sou

6、rce)(structsensors_control_device_t*dev);    int(*activate)(structsensors_control_device_t*dev, inthandle,intenabled);    int(*set_delay)(structsensors_control_device_t*dev,int32_tms);   int(*wake)(structsensors_control_device_t*dev);};2.2sensors_data_context_tstruct

7、sensors_data_context_t{   structsensors_data_device_tdevice;   intfd;};structsensors_data_device_t{   structhw_device_tcommon;   int(*data_open)(structsensors_data_device_t*dev,intfd);   int(*data_close)(structsensors_data_device_t*dev);    int(*poll)(structsensors_d

8、ata_device_t*dev,           sensors_data_t*data);}structhw_device_t{   uint32_ttag;uint32_tversion;   structhw_module_t*module;   i

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

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

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