yxwkaifa 2016-04-01 原文
因為Android中預設并沒有使用标準alsa,而是使用的是tinyalsa。是以就算基于指令行的測試也要使用libtinyalsa。Android系統在上層Audio千變萬化的時候,能夠能這些個工具實時檢視到,比方音頻通道的切換等等.
1.編譯tinyalsa配套工具
$ mmm external/tinyalsa/
編譯完後會産生tinyplay/tinymix/tinycap等等工具。
tinymix: 檢視配置混音器
tinyplay: 播放音頻
tinycap: 錄音
2.檢視目前系統的聲霸卡
- [email protected]:/ # cat /proc/asound/cards
- 0 [RKRK616 ]: RK_RK616 - RK_RK616
- RK_RK616
- 1 [ROCKCHIPSPDIF ]: ROCKCHIP-SPDIF - ROCKCHIP-SPDIF
- ROCKCHIP-SPDIF
- [email protected]:/ #
3.tinymix檢視混響器
tinymix用法a.不加不論什麼參數-顯示目前配置情況 b.tinymix [ctrl id] [var]不加[var]能夠檢視該[ctrl id]可選選項。
- [email protected]:/ # tinymix
- Number of controls: 7
- ctl type num name value
- 0 ENUM 1 Playback Path OFF
- 1 ENUM 1 Capture MIC Path MIC OFF
- 2 ENUM 1 Voice Call Path OFF
- 3 ENUM 1 Voip Path OFF
- 4 INT 2 Speaker Playback Volume 0 0
- 5 INT 2 Headphone Playback Volume 0 0
- 6 ENUM 1 Modem Input Enable ON
- [email protected]:/ #
相應解釋:
英文 | 中文 | 備注 |
Playback Path | 音頻輸出通道 | |
Capture MIC Path | 音頻輸入通道 | |
Voice Call Pah | 通話音頻通道 | 裝置沒有通話子產品,暫無法測試 |
Voip Pah | IP電話音頻通道 | 場景Gtalk;值有:SPK/HP_NO_MIC/BT |
Speaker Playback Volume | 揚聲器音量 | 和上層音量值無關 |
Headphone Playback Volume | 耳機音量 | 同上 |
Modem Input Enable | 暫不知何用 | 經測試不能控制音頻輸入輸出 |
Playback Path有:
英文 | 中文 | 備注 |
OFF | 關閉 | |
RCV | - | |
SPK | 揚聲器 | 經常使用 |
HP | 耳機帶麥 | |
HP_NO_MIC | 耳機無麥 | 經常使用 |
BT | 藍牙 | |
SPK_HP | - | |
RING_SPK | - | |
RING_HP | - | |
RING_HP_NO_MIC | - | |
RING_SPK_HP | - |
例:将輸出切換到揚聲器
[email protected]:/ # tinymix 0 SPK
關于tinymix小結:
通過觀察發現,Android系統的聲音音量的調節并沒有直接使用tinyalsa,而基于上層軟體實作,由于不管上層音量怎麼改變。這裡看到的都是24(以我採用的裝置為例)。
通道的切換是真正使用了tinyalsa,當通過不同通道播放音樂的時候能夠實時觀察到通道的切換。在某個站點上看到Android在沒有聲音播放的3秒後會關于alsa,這裡也得到了證明,我曾經覺得Android系統會永久占用音頻裝置。
當通過藍牙播放音樂的時候,已經不經過alsa了。tinymix檢視得都處理關閉狀态,由于Android4.2的藍牙協定所有在使用者層實作了。直接走uart通道。這種設計方式一時半會不能了解。
4.使用tinyplay播放wav音樂
這個僅僅是一個最主要的播放器。是以不支援播放MP3等等壓縮過格式的音樂。
沒有學會使用前。網上都說非常麻煩。可是如今看來一點也不麻煩,直接播放了44.1kHz/44.8kHz的wav音樂。
- [email protected]:/ # tinyplay /sdcard/0_16.wav
- Playing sample: 2 ch, 44100 hz, 16 bit
- [email protected]:/ #
注:播放之前得首先使用tinymix把通道設定好,上文中已經給出了設定到揚聲器中的樣例;因為播放時使用的最大音量進行播放的,是以注意防止被吓到。這裡将測試音頻檔案上傳。
5.tinycap使用
[email protected]:/ # tinycap /sdcard/test.wav
能夠進行錄音。
眼下僅僅遇到這些,就先總結到這,能夠随時再深入。
20141014更新:
1.原來tinyalsa最原始的源代碼在這裡tinyalsa_github。
2.自己fork一份。加入靜态編譯方法以及busybox方式的将tinymix/tinyplay/tinycap/tinypcminfo內建一個tinyalsa。
tinyalsa-utils 包括了tinymix/tinyplay/tinycap/tinypcminfo用法是 tinyalsa + 工具名。比方要執行tinymix,那麼就執行 tinyalsa mix或者tinyalsa tinymix。下載下傳位址。
[email protected]:/ # tinyalsa mix
Mixer name: 'RK_RK616'
Number of controls: 7
ctl type num name value
0 ENUM 1 Playback Path OFF
1 ENUM 1 Capture MIC Path Main Mic
2 ENUM 1 Voice Call Path OFF
3 ENUM 1 Voip Path OFF
4 INT 2 Speaker Playback Volume 0 0
5 INT 2 Headphone Playback Volume 0 0
6 ENUM 1 Modem Input Enable ON
[email protected]:/ #
3.依據這個[PATCH] tinyalsa: new package資訊顯示。以後tinyalsa也會被內建進busybox中。
4.假設出現Failed to open mixer錯誤,代表你的Android裝置不是alsa音頻驅動,而是legacy OSS device。
制作靜态庫參考:Linux下Gcc生成和使用靜态庫和動态庫具體解釋
其他被證明為假的如果:
1.須要改寫init.rc讓系統不啟動android相關的服務(mediaserver)
2.須要通過其他途徑擷取tinyalsa.
Android音頻底層調試-基于tinyalsa的更多相關文章
-
[轉]Android音頻底層調試-基于tinyalsa
http://blog.csdn.net/kangear/article/details/38139669 [-] 編譯tinyalsa配套工具 檢視目前系統的聲霸卡 tinymix檢視混響器 使用ti ...
-
Android音頻介紹
這個世界音頻裝置千變萬化,Android也不可能為每種裝置都提供支援.Android定義了一個架構,這個架構來适配底層的音頻裝置.該适配層的定義位于: hardware/libhardware_leg ...
-
Android音頻系統之音頻架構
1.1 音頻架構 轉載請注明,From LXS, http://blog.csdn.net/uiop78uiop78/article/details/8796492 Android的音頻系統在很長一段 ...
-
Android音頻處理——通過AudioRecord去儲存PCM檔案進行錄制,播放,停止,删除功能
Android音頻處理--通過AudioRecord去儲存PCM檔案進行錄制,播放,停止,删除功能 音頻這方面很博大精深,我這裡肯定講不了什麼進階的東西,最多也隻是一些基礎類知識,首先,我們要介紹一下 ...
-
高通Android平台硬體調試之Camera篇
之前一段時間有幸在高通android平台上調試2款camera sensor,一款是OV的5M YUV sensor,支援jpeg out,同時也支援AF,調試比較比較簡單,因為别的項目已經在使用了, ...
-
Android的底層庫libutils介紹
第一部分 libutils概述 libutils是Android的底層庫,這個庫以C++實作,它提供的API也是C++的.Android的層次的C語言程式和庫,大都基于libutils開發. libu ...
-
Android音頻開發之——如何播放一幀音頻
本文重點關注如何在Android平台上播放一幀音頻資料.閱讀本文之前,建議先讀一下<Android音頻開發(1):基礎知識>,因為音頻開發過程中,經常要涉及到這些基礎知識,掌握了這些重要的 ...
-
Android開發自學筆記(基于Android Studio1.3.1)—1.環境搭建(轉)
一.引言 本套學習筆記的開發環境是Windows 10 專業版和Android Studio 的最新版1.3.1. Android Studio 是一個Android開發環境,基于Intelli ...
-
Android音頻焦點詳解(上)
轉載請注明出處:http://www.cnblogs.com/landptf/p/6384112.html 2017年開年第一篇部落格,很早就想總結一下Android音頻的相關知識.今天我們先來看一下音 ...