亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 常見問題 > 正文

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

2019-12-21 04:50:26
字體:
來源:轉載
供稿:網友

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。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩中文字幕av| 亚洲免费电影在线观看| 亚洲在线免费视频| 欧美成人中文字幕| 亚洲一区二区三区视频| 深夜福利国产精品| 精品夜色国产国偷在线| 欧美午夜宅男影院在线观看| 国产亚洲精品91在线| 国产精品久久久久免费a∨| 久久69精品久久久久久久电影好| 91热精品视频| 一区二区三区精品99久久| 欧美中文在线观看国产| 欧美一级在线亚洲天堂| 国产精品免费视频久久久| 亚洲精品国产欧美| 91国产视频在线| 亚洲欧美日韩中文在线| 亚洲精品自拍第一页| 国产精品久久久久久久电影| 欧美猛交ⅹxxx乱大交视频| 欧美尺度大的性做爰视频| 日本精品中文字幕| 日韩久久免费视频| 久久久人成影片一区二区三区| 亚洲免费视频观看| 日韩一区二区欧美| 色哟哟网站入口亚洲精品| 亚洲精品国产精品乱码不99按摩| 国产精品69久久久久| 成人亲热视频网站| 亚洲欧洲日产国产网站| 国产精品久久77777| 久久天天躁狠狠躁老女人| 国产精品久久久久久搜索| 久久久精品美女| 91网站免费看| 海角国产乱辈乱精品视频| 中文字幕亚洲图片| 国产精品视频一区二区高潮| 91地址最新发布| 欧美黄网免费在线观看| 国产成人极品视频| 精品国产91久久久久久| 日韩有码在线视频| 国产玖玖精品视频| 777国产偷窥盗摄精品视频| 欧美性极品xxxx娇小| 欧美成年人网站| 亚洲电影av在线| 久久久免费精品视频| 国产主播欧美精品| 久久久在线观看| 欧美高清自拍一区| 亚洲成人激情在线观看| 精品无人区乱码1区2区3区在线| 欧美黑人性生活视频| y97精品国产97久久久久久| 在线播放国产精品| 国产成人精品综合| 亚洲精品日韩在线| 成人写真福利网| 亚洲毛片在线观看.| 欧美多人乱p欧美4p久久| 精品亚洲男同gayvideo网站| 国产一区二区三区四区福利| 国产精品av电影| 欧美激情按摩在线| 91免费综合在线| 91免费看片在线| 国产精品免费久久久久影院| 91禁外国网站| 亚洲午夜精品久久久久久久久久久久| 亚洲黄色有码视频| 韩国欧美亚洲国产| 日韩av在线导航| 精品视频久久久| 日本aⅴ大伊香蕉精品视频| 一区二区三区美女xx视频| 亚洲欧美日韩国产精品| 亚洲精品国产综合区久久久久久久| www.亚洲成人| 97超级碰碰碰久久久| 俺也去精品视频在线观看| 亚洲欧美日韩国产中文| 在线视频日本亚洲性| 日韩高清有码在线| 欧美又大粗又爽又黄大片视频| 91精品免费视频| 欧美日韩爱爱视频| 欧美最猛性xxxxx(亚洲精品)| 95av在线视频| 欧美极品欧美精品欧美视频| 国产一区二区三区中文| 久久综合久久美利坚合众国| 91精品国产九九九久久久亚洲| 亚洲无线码在线一区观看| 欧美福利视频在线| 91亚洲va在线va天堂va国| 亚洲精品乱码久久久久久金桔影视| 俺去了亚洲欧美日韩| 欧美激情免费在线| 国产精品第一区| 一区二区欧美激情| 97视频在线观看免费高清完整版在线观看| 亚洲va国产va天堂va久久| 久久精品电影网站| 日韩av在线网址| 精品无人区乱码1区2区3区在线| 久久综合亚洲社区| 日韩av在线直播| 夜夜躁日日躁狠狠久久88av| 亚洲电影成人av99爱色| 欧美亚洲第一页| 国产成人精品久久二区二区| 欧美福利视频网站| 亚洲男人av在线| 欧美日韩在线影院| 国产日韩在线精品av| 成人国产在线激情| 2023亚洲男人天堂| 91中文字幕一区| 欧美在线观看网址综合| 日韩av在线影视| 欧美日韩色婷婷| 日韩小视频在线观看| 亚洲成人精品在线| xxxxx成人.com| 日韩在线一区二区三区免费视频| 日本一区二三区好的精华液| 色综合视频网站| 国产精品白丝jk喷水视频一区| 日韩欧美在线视频日韩欧美在线视频| 亚洲国产福利在线| 久久久久久久999精品视频| 日韩一区二区精品视频| 超薄丝袜一区二区| 欧美性受xxxx白人性爽| 欧美国产日韩在线| 欧美日韩激情网| 海角国产乱辈乱精品视频| 久久在线观看视频| 日韩精品极品在线观看| 精品福利一区二区| 日韩在线欧美在线| 欧美国产日韩一区二区三区| 亚洲国产高清福利视频| 欧美在线观看网址综合| 亚洲精品成人久久久| 国产精自产拍久久久久久| 国产免费久久av| 国产精品吴梦梦| 久久婷婷国产麻豆91天堂| 色噜噜狠狠色综合网图区| 久久久久久网站| 美女久久久久久久久久久| 成人在线激情视频| 国产成人短视频| 午夜精品一区二区三区在线播放| 日韩欧美亚洲范冰冰与中字| 国产精品视频自在线| 欧美一级淫片播放口| 欧美一级大片在线免费观看|