日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android接口和框架学习

發布時間:2025/4/16 Android 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android接口和框架学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android接口和框架學習

縮寫:

HAL:HardwareAbstraction Layer,硬件抽象層

CTS:CompatibilityTest Suite,兼容性測試套件

?

Android讓你能夠自由實現設備規格和驅動,HAL提供一套標準方法來在Android平臺棧(platform stack)和硬件之間創建軟件鉤子(hook),Android系統是開源的,你可以貢獻自己的接口和增加功能。

?

為保證設備保持高質量和提供一直的用戶體驗,每個設備必須通過CTS測試。CTS確保設備滿足質量標準,保證APP的可靠運行和好的用戶體驗。

?

在移植Android到你的硬件平臺上,花些時間從一定高度來理解Android系統框架。因為你的驅動和HAL要和android交互,了解Android工作機制可以幫助你有效控制Android源代碼樹的多層代碼。


圖1

1.?????應用框架層(Applicationframework)

應用框架層主要是應用程序開發人員經常使用,作為硬件開發者,你應該知道盡可能多的API,且要知道這些API和底層HAL接口的映射關系,這樣可以提供關于實現驅動的有用信息。

?

2.?????IPC進程間通訊機制Binder(Binder IPC)

Binder機制允許應用框架層款過進程界限并訪問Android系統服務代碼,這可使高層的框架API和Android系統服務交互,在應用框架層,這種通訊對開發者隱藏并表現為事情就好像是順其自然完成一樣。

?

3.?????系統服務(system services)

應用框架API提供的函數和系統服務通信以訪問底層硬件,服務是模塊化的,比如比較重要的Windows Manager窗口管理器、Serarch Service搜索服務或是Notification Manager通知管理器。Android包括兩組服務:系統(比如Windows Manager和Notification Manager)和多媒體服務(如錄制和播放媒體服務)

?

4.?????HAL硬件抽象層(Hardware Abstraction Layer)

HAL定義一組標準接口來讓設備廠商去實現,允許Android不必知道底層驅動的實現。HAL允許你在不影響或是修改上層系統的前提下實現功能,HAL的實現被打包成為模塊(.so文件)文件,并且在適當的時候被Android系統加載。


圖2

你必須為產品的硬件實現相應的HAL(和驅動), HAL的實現典型的被編譯成共享庫模塊(.so文件),Android沒有要求在HAL實現和設備驅動之間是標準的交互,所以你可以基于自己的情況做最適合的事情。但是,為了保證Android系統能夠和硬件正確交互,你必須遵守每個具有硬件特性的HAL接口協議。

?

5.?????標準HAL結構體(Standare HAL structure)

每個特定硬件HAL接口都有其特性,由hardware/libhardware/include/hardware/hardware.h的結構體hw_module_t定義,這樣可保證HAL有個可預見的結構。HAL接口允許Android系統一致性的加載你的HAL模塊的正確版本。HAL接口由兩個通用的組件組成:一個模塊(module)和一個設備(device)。

?

5.1???模塊(module)

模塊打包了HAL的實現,這些實現作為一個共享庫.so文件體現。它包含模塊的version、name、author,這些成員幫助Android找到和加載模塊,模塊對應的結構體為hw_module_t,在hardware/libhardware/include/hardware/hardware.h定義,此結構體描述一個模塊和包含比如模塊版本、作者和名字。

?

除此之外,hw_module_t結構體還包含指向hw_module_methods_t結構體的指針methods,hw_module_methods_t結構體包含一個打開模塊的函數指針open。這個open函數作為一個抽象服務發起和硬件的通信,每個具體的硬件HAL通常要擴展通用的hw_module_t結構體,增加附加信息來更好的描述具體的硬件。比如攝像頭HAL,

typedefstruct camera_module {hw_module_t common;int (*get_number_of_cameras)(void);//擴展部分int (*get_camera_info)(int camera_id,struct camera_info *info); //擴展部分 }camera_module_t;

當你實現一個HAL和創建模塊結構體,你必須以HAL_MODULE_INFO_SYM來給name成員賦值,比如:

structaudio_module HAL_MODULE_INFO_SYM = {.common = {.tag = HARDWARE_MODULE_TAG,.module_api_version =AUDIO_MODULE_API_VERSION_0_1,.hal_api_version =HARDWARE_HAL_API_VERSION,.id = AUDIO_HARDWARE_MODULE_ID,.name ="NVIDIA Tegra Audio HAL",.author = "The Android Open SourceProject",.methods = &hal_module_methods,}, };


5.2???設備(device)

設備抽象了產品實際的硬件,比如一個音頻模塊包含一個基本的音頻設備、一個USB音頻設備或一個藍牙A2DP音頻設備。一個設備由hw_device_t結構體描述,像模塊一樣,每種類型的設備可在hw_device_t結構體的基礎上定義更多細節信息,比如指向硬件特征的函數指針,audio_hw_device_t就包含指向音頻設備操作的函數指針get_supported_devices。

struct audio_hw_device {struct hw_device_t common;/*** used by audio flinger to enumerate what devices are supported by* each audio_hw_device implementation.** Return value is a bitmask of 1 or more values of audio_devices_t*/uint32_t (*get_supported_devices)(const struct audio_hw_device *dev);... }; typedef struct audio_hw_deviceaudio_hw_device_t;


除了這些標準的屬性,每個具體硬件HALC接口可以定義多個硬件特有屬性和需求

?

6.?????HAL模塊

HAL的實現被編譯成為模塊(.so)文件和在Android合適的時候會動態鏈接它。你可以為你每個HAL實現創建Android.mk文件來編譯你的模塊并指向你的源代碼文件。通常,你的共享庫必須以某種格式命名,這樣它們才可能被找到和加載。從模塊到模塊的命名方案略有不同,但是一般遵循下面的形式:<module_type>.<device_name>

非常重要,比如module_type可以是GPS,但如果采用不同的GPS外設,可以通過device_name來區分。

?

7.?????Linux內核

開發你的設備驅動類似于開發典型的linux設備驅動,Android使用一個版本的Linux內核,在此內核基礎上增加了一些Android特有的內容,比如喚醒鎖(wave lock,一個內存管理器系統更積極主動去保護內存)、Binder IPC驅動和其他針對移動嵌入式平臺的重要特征,這些特征是系統主要功能和不影響驅動開發。

?

你可以使用任何支持所需要特診的版本內核(比如binder驅動),但是,我們推薦采用最新的Android內核版本。

?


參考鏈接:

http://source.android.com/devices/index.html

?

?

總結

以上是生活随笔為你收集整理的Android接口和框架学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伊人久久激情 | 嫩草视频91 | 亚洲精品一区二 | 男人操女人下面视频 | 穿越异世荒淫h啪肉np文 | 中文字幕免费中文 | 翔田千里在线播放 | 欧美一级黄色网 | 亚洲免费网 | 青青草成人在线 | 波多野结衣高清视频 | 亚洲视频精品在线 | 国产性一乱一性一伧一色 | 国产高清在线一区 | 婷婷成人综合 | 亚洲国产精品无码观看久久 | 色亚洲欧美 | www.国产精品.com | 久久久精品一区二区 | 欧美久久久久久久 | 欧美极品jizzhd欧美 | 91精品国产综合久久久久久久 | 亚洲免费观看高清完整版在线 | 亚洲成a人在线观看 | 亚洲精品鲁一鲁一区二区三区 | 操操操干干干 | 国产在线中文 | 一级免费观看 | 国产人妖一区二区 | 成人午夜网| 国产第一毛片 | 亚洲av永久无码精品一区二区国产 | 成人免费一级视频 | 99国产在线观看 | 天天看天天干 | 国产精品-区区久久久狼 | free性欧美hd精品4k | 日日燥夜夜燥 | 一级黄色片免费播放 | 国产精品一区二区三区在线播放 | 性少妇videosexfre | 正在播放adn156松下纱荣子 | 久久久精品在线 | 国产一区二区三区四区五区六区 | 久久国产剧情 | 精品91自产拍在线观看二区 | 亚洲AV成人精品 | a免费观看| 国产a国产片国产 | 午夜在线精品偷拍 | 婷婷一区二区三区四区 | 中文字幕人妻丝袜乱一区三区 | 亚洲欧美视频在线观看 | 日韩欧美一级在线 | 高清一二三区 | 女儿的朋友4在线观看 | 日本a在线免费观看 | 丁香婷婷综合激情 | 天天色综合久久 | 国产高清在线免费 | 爱情岛亚洲论坛入口 | 人妻av中文系列 | 亚洲一区二区三区蜜桃 | 亚洲三级色 | 色精品| 精品国偷自产在线 | 青草视频在线免费观看 | 久久夜视频 | 狠狠地日| 亚洲视频免费在线 | 天天天天操 | 国产精品久久久久久白浆 | 五月天中文字幕 | 嫩草社区 | 九九热视频精品在线观看 | 男女激情av | 国模少妇一区二区 | 国产黄色一级大片 | 亚洲图片在线播放 | 电家庭影院午夜 | 永久免费av| 精品人伦一区二区三电影 | 国产精品毛片视频 | 黄色特级网站 | 午夜黄色| 中文字幕一区二区不卡 | 在线免费观看av网 | 欧洲成人综合网 | 日韩mv欧美mv国产网站 | 国产欧美日韩一区二区三区 | 日本女人性视频 | 在线看片中文字幕 | 国产精品国产三级国产专区51 | 四虎午夜影院 | 国色天香av | 96日本xxxxxⅹxxx17 | 在线观看av中文字幕 | 红桃视频在线播放 | 日韩成年人视频 |