欧美日韩伦理在线免费_国产精品青草久久久久福利99_亚洲主播在线播放_国模精品娜娜一二三区_91久久综合亚洲鲁鲁五月天_国产精品jizz在线观看美国_午夜视频在线观看一区二区_国产精品久久久久久久久搜平片_欧美色综合天天久久综合精品_亚洲国产精品传媒在线观看_国产美女精品视频免费观看_亚洲电影下载_久久久精品性_在线看成人片_亚洲欧美日韩精品综合在线观看_欧美亚洲成人免费

手機
手機 手機資訊 手機應用資訊 手機軟件教程 安卓apk到g-sensor driver的大致流程
安卓
06月 05

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

編輯:匿名 來源:互聯網
放大 縮小 打印 郵件 收藏本頁 游吧論壇

Android上層應用apk到G-sensor driver的大致流程:

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

1,源代碼和目標位置

源代碼: /hardware/libhardware目錄,該目錄的目錄結構如下:

/hardware/libhardware/hardware.c編譯成libhardware.so,目標位置為/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,目標位置為/system/lib/hw目錄

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

[控制方面]

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);

[數據方面]

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的狀態控制由SensorService來負責,它的java代碼和JNI代碼分別位于:

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

frameworks/base/services/jni/com_Android_server_SensorService.cpp

在Java層Sensor的數據控制由SensorManager來負責,它的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調用sensorService.cpp中的方法實現的。

sensorManager.java的具體通信是通過JNI調用sensorManager.cpp中的方法實現的。

sensorService.cpp和sensorManger.cpp通過hardware.c與sensor.so通信。其中sensorService.cpp實現對sensor的狀態控制,sensorManger.cpp實現對sensor的數據控制。

sensor.so通過ioctl控制sensor driver的狀態,通過打開sensor driver對應的設備文件讀取G-sensor采集的數據。

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

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

sensorManager.java不斷輪詢從sensor.so中取數據。取到數據后送給負責監聽此類型sensor的 sensorEventListener.java。sensorEventListener.java通過在sensorManager.java中注冊可以監聽特定類型的sensor傳來的數據。

系統啟動時執行systemProcess,會啟動sensorService.java,在sensorService.java的構造函數中調用JNI方法_sensor_control_init()。

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

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

重要信息是它的一個成員結構變量中包含的一個函數指針open,該指針所指函數會對一個device結構變量賦值,從而帶出sensorService.cpp和sensorManager.cpp與sensor通信所需要的全部信息。

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

sensorService.cpp和sensorManager.cpp在得到HAL_MODULE_INFO_SYM結構后都會調用 sensors.h的inline函數open()通過HAL_MODULE_INFO_SYM的open函數指針將所需的device信息取回。

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

打印 郵件 收藏本頁 幫肋
推薦閱讀
相關閱讀
欧美日韩伦理在线免费_国产精品青草久久久久福利99_亚洲主播在线播放_国模精品娜娜一二三区_91久久综合亚洲鲁鲁五月天_国产精品jizz在线观看美国_午夜视频在线观看一区二区_国产精品久久久久久久久搜平片_欧美色综合天天久久综合精品_亚洲国产精品传媒在线观看_国产美女精品视频免费观看_亚洲电影下载_久久久精品性_在线看成人片_亚洲欧美日韩精品综合在线观看_欧美亚洲成人免费
一区二区三区在线高清| 亚洲午夜在线视频| 欧美性猛交xxxx乱大交退制版| 久久激情综合网| 亚洲乱亚洲高清| 久久久国产一区二区| 国产精品视频网址| 亚洲人成网站999久久久综合| 久久久久国产一区二区三区| 亚洲国产精品va在线看黑人动漫| 国产综合久久久久久鬼色| 亚洲片国产一区一级在线观看| 国产欧美韩国高清| 久久深夜福利免费观看| 一区二区三区鲁丝不卡| 亚洲国产精品一区| 久久综合狠狠| 久久黄金**| 国产精品视频免费在线观看| 国产视频欧美| 欧美日韩国产一区二区三区地区| 在线不卡免费欧美| 国产亚洲视频在线| 欧美视频在线不卡| 欧美影院在线播放| 能在线观看的日韩av| a4yy欧美一区二区三区| 久久久xxx| 久久超碰97人人做人人爱| 国产精品扒开腿爽爽爽视频| 国产日韩欧美在线| 在线视频免费在线观看一区二区| 欧美在线在线| 在线精品国产成人综合| 久久精品亚洲精品国产欧美kt∨| 久久精品麻豆| 夜夜爽www精品| 久久精品中文字幕免费mv| 香蕉成人久久| 欧美精品播放| 欧美11—12娇小xxxx| 今天的高清视频免费播放成人| 欧美视频在线观看一区| 久久亚洲精品中文字幕冲田杏梨| 99亚洲伊人久久精品影院红桃| 国产精品大片wwwwww| 亚洲一区二区免费在线| 久久久久久久久岛国免费| 亚洲一区视频在线| 国产婷婷色一区二区三区在线| 亚洲国产毛片完整版| 欧美高清在线一区二区| 国产精品99久久久久久有的能看| 亚洲欧洲在线免费| 久久精品中文字幕一区| 国产亚洲福利| 久久久精品一区二区三区| 欧美精品久久久久久久免费观看| 国产一区二区三区直播精品电影| 在线看欧美日韩| 欧美电影免费观看网站| 亚洲一区二区成人在线观看| 久久久在线视频| 久久都是精品| 在线免费观看视频一区| 一本大道久久精品懂色aⅴ| 国产精品不卡在线| 久久成人精品视频| 欧美一区二区视频97| 欧美日韩国产三级| 亚洲黄色片网站| 欧美日韩亚洲视频一区| 亚洲精品日韩精品| 久久综合九色综合久99| 国产日韩欧美麻豆| 欧美日韩在线播放| 一区二区三区四区国产精品| 精品粉嫩aⅴ一区二区三区四区| 欧美成人情趣视频| 免费欧美日韩国产三级电影| 久久久青草婷婷精品综合日韩| 欧美黄色网络| 久久九九久久九九| 久久在线免费观看| 欧美深夜福利| 一本色道久久综合狠狠躁篇怎么玩| 国产亚洲一区二区三区在线播放| 亚洲一区二区视频在线| 久久久久久伊人| 国产精品免费网站在线观看| 久久精品夜色噜噜亚洲aⅴ| 欧美日韩影院| 亚洲国产欧美在线| 欧美激情一区在线| 欧美国产日本高清在线| 亚洲一区影音先锋| 欧美日韩一区二区三区在线观看免| 亚洲国产精品久久精品怡红院| 欧美日韩免费观看一区| 国产一区二区三区四区老人| 欧美精品一区二区三区很污很色的| 国产精品久久久久一区| 国产精品久久久对白| 欧美色播在线播放| 国产精品毛片一区二区三区| 美国成人直播| 亚洲日本免费电影| 国产一区二区在线观看免费| 欧美日韩精品是欧美日韩精品| 欧美日韩精品一区二区三区四区| 国产午夜精品一区二区三区欧美| 亚洲欧美日韩精品久久奇米色影视| 国模大胆一区二区三区| 久久视频一区二区| 欧美日韩国产专区| 亚洲国产国产亚洲一二三| 在线精品视频在线观看高清| 在线欧美视频| 欧美高潮视频| 欧美日韩色综合| 亚洲一区二区在线免费观看| 欲香欲色天天天综合和网| 91久久午夜| 欧美中文字幕| 亚洲激情一区二区三区| 一区二区三区国产在线观看| 亚洲国产高清在线观看视频| 亚洲色无码播放| 欧美视频导航| 国产精品国产馆在线真实露脸| 一区二区三区 在线观看视| 亚洲第一免费播放区| 亚洲人成人一区二区三区| 亚洲黑丝一区二区| 国产精品国产亚洲精品看不卡15| 亚洲经典一区| 国产在线国偷精品产拍免费yy| 久久精品二区| 亚洲国产精品一区在线观看不卡| 永久域名在线精品| 久久人人看视频| 一区二区三区**美女毛片| 日韩天堂在线视频| 欧美日本国产一区| 精品91久久久久| 国产精品美女久久久免费| 欧美大片在线观看一区二区| 亚洲一区二区三区在线视频| 狠狠综合久久av一区二区小说| 亚洲欧美精品在线| 国产精品综合色区在线观看| 欧美sm视频| 国户精品久久久久久久久久久不卡| 久久国产精品久久久久久电车| 国产精品一国产精品k频道56| 美女精品在线| 欧美日韩综合一区| 久久精品国产亚洲一区二区三区| 国产在线观看一区| 欧美日韩成人激情| 国产精品成人一区二区三区夜夜夜| 韩国av一区二区三区四区| 欧美日韩免费区域视频在线观看| 欧美本精品男人aⅴ天堂|