国产在线一区视频-国产在线永久视频-国产在线原创剧情麻豆-国产在线中文字幕-男人的天堂在线播放-男人的天堂在线观看入口

手機(jī)
安卓
06月 05

安卓apk到g-sensor driver的大致流程

編輯:匿名 來源:互聯(lián)網(wǎng)
放大 縮小 打印 郵件 收藏本頁 游吧論壇

Android上層應(yīng)用apk到G-sensor driver的大致流程:

Android HAL層,即硬件抽象層,是Google響應(yīng)廠家“希望不公開源碼”的要求推出的新概念

1,源代碼和目標(biāo)位置

源代碼: /hardware/libhardware目錄,該目錄的目錄結(jié)構(gòu)如下:

/hardware/libhardware/hardware.c編譯成libhardware.so,目標(biāo)位置為/system/lib目錄

/hardware/libhardware/include/hardware目錄下包含如下頭文件:

hardware.h 通用硬件模塊頭文件

copybit.h copybit模塊頭文件

gralloc.h gralloc模塊頭文件

lights.h 背光模塊頭文件

overlay.h overlay模塊頭文件

qemud.h qemud模塊頭文件

sensors.h 傳感器模塊頭文件

/hardware/libhardware/modules目錄下定義了很多硬件模塊

這些硬件模塊都編譯成xxx.xxx.so,目標(biāo)位置為/system/lib/hw目錄

2,Android對于Sensor的API定義在 hardware/libhardware/include/hardware/sensor.h中,要求在sensor.so提供以下8個API函數(shù)

[控制方面]

int (*open_data_source)(struct sensors_control_device_t *dev);

int (*activate)(struct sensors_control_device_t *dev, int handle, int enabled);

int (*set_delay)(struct sensors_control_device_t *dev, int32_t ms);

int (*wake)(struct sensors_control_device_t *dev);

[數(shù)據(jù)方面]

int (*data_open)(struct sensors_data_device_t *dev, int fd);

int (*data_close)(struct sensors_data_device_t *dev);

int (*poll)(struct sensors_data_device_t *dev, sensors_data_t* data);

[模塊方面]

int (*get_sensors_list)(struct sensors_module_t* module, struct sensor_t const** list);

在Java層Sensor的狀態(tài)控制由SensorService來負(fù)責(zé),它的java代碼和JNI代碼分別位于:

frameworks/base/services/java/com/Android/server/SensorService.java

frameworks/base/services/jni/com_Android_server_SensorService.cpp

在Java層Sensor的數(shù)據(jù)控制由SensorManager來負(fù)責(zé),它的java代碼和JNI代碼分別位于:

frameworks/base/core/java/Android/hardware/SensorManager.java

frameworks/base/core/jni/Android_hardware_SensorManager.cpp

Android framework中與sensor通信的是sensorService.java和sensorManager.java。

sensorService.java的具體通信是通過JNI調(diào)用sensorService.cpp中的方法實(shí)現(xiàn)的。

sensorManager.java的具體通信是通過JNI調(diào)用sensorManager.cpp中的方法實(shí)現(xiàn)的。

sensorService.cpp和sensorManger.cpp通過hardware.c與sensor.so通信。其中sensorService.cpp實(shí)現(xiàn)對sensor的狀態(tài)控制,sensorManger.cpp實(shí)現(xiàn)對sensor的數(shù)據(jù)控制。

sensor.so通過ioctl控制sensor driver的狀態(tài),通過打開sensor driver對應(yīng)的設(shè)備文件讀取G-sensor采集的數(shù)據(jù)。

Android SDK提供了4個類來于sensor通信,分別為 sensor,sensorEvent,sensorEventListener,sensorManager。其中 sensorEventListener用來在sensorManager中注冊需要監(jiān)聽的sensor類型。

sensorManager.java提供registrater(),unregistrater()接口供sensorEventListener使用。

sensorManager.java不斷輪詢從sensor.so中取數(shù)據(jù)。取到數(shù)據(jù)后送給負(fù)責(zé)監(jiān)聽此類型sensor的 sensorEventListener.java。sensorEventListener.java通過在sensorManager.java中注冊可以監(jiān)聽特定類型的sensor傳來的數(shù)據(jù)。

系統(tǒng)啟動時執(zhí)行systemProcess,會啟動sensorService.java,在sensorService.java的構(gòu)造函數(shù)中調(diào)用JNI方法_sensor_control_init()。

sensorService.cpp中相應(yīng)的方法Android_int()會被執(zhí)行。該函數(shù)會調(diào)用hardware.c中的方法hw_get_module()此函數(shù)又通過調(diào)用load()函數(shù)在system/lib/hw下查找sensor.so

查找時會根據(jù)harware.c中定義好的sensor.*.so的擴(kuò)展名的順序查找,找到第一個匹配的時候即停止,并將該sensor.so中定義好的一個全局變量HAL_MODULE_INFO_SYM帶回。該變量包含的一個

重要信息是它的一個成員結(jié)構(gòu)變量中包含的一個函數(shù)指針open,該指針?biāo)负瘮?shù)會對一個device結(jié)構(gòu)變量賦值,從而帶出sensorService.cpp和sensorManager.cpp與sensor通信所需要的全部信息。

device結(jié)構(gòu)變量有兩種變體分別供sensorService.cpp和sensorManaer.cpp使用。其中主要是一些函數(shù)指針指向與sensor通信的函數(shù)。

sensorService.cpp和sensorManager.cpp在得到HAL_MODULE_INFO_SYM結(jié)構(gòu)后都會調(diào)用 sensors.h的inline函數(shù)open()通過HAL_MODULE_INFO_SYM的open函數(shù)指針將所需的device信息取回。

系統(tǒng)在啟動activityManager.java時,它會啟動sensorManager.java,它也會調(diào)用hardware.c中的方法hw_get_module()帶回HAL_MODULE_INFO_SYM。

打印 郵件 收藏本頁 幫肋
推薦閱讀
相關(guān)閱讀
主站蜘蛛池模板: 国产精品99久久久久久人四虎最新章节 | 婷婷五月综合在线| 久久免费A片奶水喷奶水| 午夜国产A久久片亚洲最大| gav视频在线观看| 国产欧美亚洲精品在线| 老司机网久久天堂| 日本欧美一区二区三区在线播 | 2k2k日韩无码| 粗久超插男人天堂| 好吊妞成人无码视频| 久久无码精品国产| 精品国产无码久久久| 老色鬼永久精品无码国产| 久久精品国产99久久丝袜| 欧美丝袜是交footjob| 日韩中文字幕一二区有码无码 | 老鸭窝视频资源下载| 精品国产亚洲无码在线| 国产精品久久久久久动漫星空| 久久99精品久久久久久国产越南 | 天天躁日日躁AAAXXⅩ秋霞网| 亚洲日韩中字国产高清在线一区| 91精品国产色综合久久不卡98 | 黑人巨大精品欧美一区二区免费| 乐播av高清无码| 狠狠撸及情五月| 成人大片男人的天堂| 高清一区二区三区| 国产免费无遮挡 视频网站| 超污污黄色的视频网站| 国产成人久久久| 国产精品嫩草55AV| 国产美女口暴吞精自拍| 成 人 a v免费图片| 亚洲无码天天更新在线视频| 影视先锋av资源网| 一区 国产精品| 亚洲无码视频专区| 日韩精品一二三四区| 日韩人妻无码一区二区三区视频|