1. 程式人生 > >Android底層開發之Audio HAL

Android底層開發之Audio HAL

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                       

Android底層開發之Audio HAL

Android音訊底層除錯-基於tinyalsa中以「拋開Android的天生複雜,迴歸嵌入式Linux的本質」的方式介紹如何除錯Linux核心中的音訊驅動。
這裡向上再伸展一下進入HAL層,看是如何將tinyalsa封裝給Frameworks使用的。

基於4.2.2版本原始碼進行討論。Android官方教程是Audio Implementing the HAL.

一個完整的Android音訊系統架構如圖所示:
Alt text
注:圖來自Android音訊系統之音訊框架

簡化理解Audio系統

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

WiredAccessoryManager.java介紹

該服務是輪循方式地檢測有線的音訊裝置,如有線耳機/HDMI/USB音效卡等等。是在如黑匣子圖右側1處將事件傳入。
最終會呼叫到Audio HAL部分。檢測的事件以及裝置型別見audio_policy.conf介紹

節。

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)注:還有很多裝置型別,由於並沒有接觸過就不翻譯試的介紹了。
   
  • 1
  • 2
  • 3
  • 4
  • 5

待續…

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述