Android底層開發之Audio HAL

2021-08-31 23:35:35 字數 1465 閱讀 3304

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

android底層開發之audio hal

在android音訊底層除錯-基於tinyalsa中以「拋開android的天生複雜,回歸嵌入式linux的本質」的方式介紹如何除錯linux核心中的音訊驅動。

這裡向上再伸展一下進入hal層,看是如何將tinyalsa封裝給frameworks使用的。

基於4.2.2版本原始碼進行討論。android官方教程是audio implementing the hal.

乙個完整的android音訊系統架構如圖所示:

注:圖來自android音訊系統之音訊框架

中間部分定義為黑匣子,暫不去了解其內部結果,因為最終的執行都是會到最下端的android hal中的。

該服務是輪循方式地檢測有線的音訊裝置,如有線耳機/hdmi/usb音效卡等等。是在如黑匣子圖右側1處將事件傳入。

最終會呼叫到audio hal部分。檢測的事件以及裝置型別見audio_policy.conf介紹節。

除了global_configuration,還有乙個audio_hw_modules是代表不同音訊硬體模組,

*primary是主要的處理模組;

*a2dp是處理藍芽**傳輸模組;

*usb是處理usb音效卡模組;

*r_submix是全稱是remote submix,是處理遠端音訊目前主要是miracast(基於wi-fi direct的螢幕共享協議)。

這麼分類是google的意思,但是真正做的時候並不一定完全堅如照做。比如單獨使用primary就附帶做了hdmi/usb音訊處理也是可行的。當然了,這裡需要在對於模組的device中加入需要處理的device type。

常見的有線的音訊裝置型別與其對應的中文意思:

audio_device_out_wired_headset     耳機audio_device_out_wired_headphone   無mic耳機audio_device_out_aux_digital       hdmiaudio_device_out_anlg_dock_headset usb sound card(usb audio)注:還有很多裝置型別,由於並沒有接觸過就不翻譯試的介紹了。
給我老師的人工智慧教程打call!

《Android底層開發技術》學習總結

android底層開發技術實戰詳解 核心 移植和驅動 學習總結 整本書看的比較粗,了解個大概,以後需要的時候,可以針對性的學習!android與linux的關係 linux kernel的版權是gpl general public license 它要求對源 的任何修改都必須開源。android的k...

《Android底層開發技術》學習總結

android底層開發技術實戰詳解 核心 移植和驅動 學習總結 整本書看的比較粗,了解個大概,以後需要的時候,可以針對性的學習!android與linux的關係 linux kernel的版權是gpl general public license 它要求對源 的任何修改都必須開源。android的k...

Android底層學習之Linux基礎

2.1 開啟終端 ctrl alt t,或者按住alt鍵,然後在游標提示處輸入terminal,按回車鍵即可 2.2 目錄操作 cd dir change directory 切換 進入目錄 pwd 檢視當前所在目錄 cd 對已切換過的目錄進行恢復操作,即返回到切換前目錄 cd 切換到包含當前目錄的...