欧美日韩伦理在线免费_国产精品青草久久久久福利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在线观看美国_午夜视频在线观看一区二区_国产精品久久久久久久久搜平片_欧美色综合天天久久综合精品_亚洲国产精品传媒在线观看_国产美女精品视频免费观看_亚洲电影下载_久久久精品性_在线看成人片_亚洲欧美日韩精品综合在线观看_欧美亚洲成人免费
欧美福利在线| 狠狠色狠狠色综合人人| 日韩一级黄色av| 午夜精品一区二区三区在线播放| 欧美日韩国产经典色站一区二区三区| 亚洲春色另类小说| 香蕉久久夜色精品国产| 亚洲国产成人精品久久久国产成人一区| 久久久91精品国产一区二区精品| 欧美电影在线观看| 亚洲电影观看| 国产精品影音先锋| 国产欧美日韩精品在线| 亚洲欧美在线一区二区| 久久亚洲欧美国产精品乐播| 欧美jizzhd精品欧美巨大免费| 久久综合色88| 欧美日本簧片| 欧美激情在线| 欧美日韩在线不卡一区| 午夜精品免费| 日韩一级裸体免费视频| 在线播放国产一区中文字幕剧情欧美| 在线精品国精品国产尤物884a| 久久久国产午夜精品| 欧美在线播放高清精品| 欧美日韩a区| 亚洲一区在线免费| 日韩亚洲欧美高清| 国产午夜久久久久| 国自产拍偷拍福利精品免费一| 先锋影音国产一区| 亚洲资源在线观看| 老司机午夜免费精品视频| 亚洲午夜一区| 久久久久久电影| 欧美日韩高清在线一区| 在线观看日韩av先锋影音电影院| 久久久美女艺术照精彩视频福利播放| 亚洲高清在线精品| 久久aⅴ国产紧身牛仔裤| 亚洲三级影院| 欧美午夜www高清视频| 亚洲一区三区视频在线观看| 久久久久国色av免费观看性色| 亚洲精品欧美精品| 亚洲人成在线影院| 免费日韩一区二区| 久久频这里精品99香蕉| 欧美一区在线看| 午夜精品在线看| 亚洲第一区中文99精品| 亚洲午夜在线观看视频在线| 亚洲专区在线| 亚洲高清在线视频| 亚洲在线视频免费观看| 久久综合电影| 久久全球大尺度高清视频| 免费视频一区二区三区在线观看| 亚洲三级电影全部在线观看高清| 欧美电影在线观看| 免费毛片一区二区三区久久久| 好吊妞这里只有精品| 久久久久久噜噜噜久久久精品| 狠狠爱www人成狠狠爱综合网| 一区二区精品国产| 午夜精品区一区二区三| 亚洲欧美区自拍先锋| 欧美日韩免费网站| 欧美国产激情二区三区| 欧美在线一区二区三区| 亚洲人成网站色ww在线| 欧美日韩一卡| 亚洲高清视频一区| 久久精品中文字幕一区| 国产精品尤物福利片在线观看| 国产精品亚洲а∨天堂免在线| 亚洲精品亚洲人成人网| 欧美精品在线视频| 性欧美xxxx视频在线观看| 欧美日韩国产小视频在线观看| 亚洲国产三级网| 欧美午夜精品理论片a级按摩| 亚洲精品在线看| 销魂美女一区二区三区视频在线| 激情欧美一区二区三区在线观看| 亚洲一区美女视频在线观看免费| 欧美中文在线视频| 欧美 日韩 国产一区二区在线视频| 久热爱精品视频线路一| 久久精品国产99国产精品| 久久久九九九九| 亚洲一区二区三区在线看| 亚洲日本免费| 国产一区二区三区四区老人| 国产在线不卡| 怡红院av一区二区三区| 欧美在线地址| 亚洲第一福利视频| 国产日韩视频| 亚洲三级毛片| 亚洲人成亚洲人成在线观看| 欧美精品成人91久久久久久久| 夜夜精品视频| 99精品国产在热久久下载| 亚洲精品1区| 欧美丰满高潮xxxx喷水动漫| 久久久久久久精| 欧美日韩大片| 午夜视频久久久| 国产一区二区三区电影在线观看| 免费亚洲一区二区| 伊甸园精品99久久久久久| 国产精品激情偷乱一区二区∴| 日韩一区二区久久| 在线视频欧美一区| 久久精品免费观看| 99精品视频一区二区三区| 欧美一区二区在线免费播放| 欧美日韩播放| 久久精品一区蜜桃臀影院| 一区二区三区欧美成人| 久久国产精品久久久久久电车| 麻豆精品传媒视频| 国产乱码精品一区二区三区忘忧草| 免费在线视频一区| 国产一区二区精品久久91| 亚洲人成高清| 国产偷自视频区视频一区二区| 国产免费成人在线视频| 欧美与欧洲交xxxx免费观看| 午夜精品久久久久久久99黑人| 亚洲激情综合| 午夜视黄欧洲亚洲| 久久精彩视频| 伊人狠狠色j香婷婷综合| 性欧美在线看片a免费观看| 国产精品免费看| 亚洲香蕉在线观看| 国产精品成人av性教育| 久久久久久久一区| 国产欧美在线视频| 久久综合久久综合这里只有精品| 欧美在线视频一区二区| 亚洲国产欧美国产综合一区| 麻豆免费精品视频| 亚洲电影欧美电影有声小说| 久久久久久亚洲精品杨幂换脸| 欧美视频精品在线| 亚洲欧美日韩久久精品| 国产一区二区日韩| av72成人在线| 亚洲高清三级视频| 国产精品社区| 国产麻豆91精品| 麻豆精品在线视频| 国产精品进线69影院| 中文欧美在线视频| 国产综合精品| 国产午夜久久久久| 亚洲级视频在线观看免费1级| 欧美破处大片在线视频| 国产精品亚洲аv天堂网| 久久久不卡网国产精品一区|