在我的應用程序發出以下語句:什麼是AudioFlinger?它爲什麼會失敗TONE_PROP_ACK?
toneGenerator.startTone(ToneGenerator.TONE_PROP_ACK, 600);
哪一個廉價的LG LS670的作品非常好運行的是Android 2.3.3,但聽起來並不在所有的所有其他手機我有,從Android 2.2的.1到Android 2.3.4。
所以我知道操作系統版本在這裏不起作用(我也在文檔中驗證過它自API 1以來一直支持)。
而且,無論是鈴聲音量和媒體音量設置爲最大和toneGenerator與初始化:
toneGenerator = new ToneGenerator(ToneGenerator.TONE_DTMF_1, 100);
我證實Settings.System.DTMF_TONE_WHEN_DIALING
設置爲1
此不一致的行爲莫名其妙(跨越不同的手機),我檢查了系統日誌時,發生這種情況,我唯一可以找到的可疑差異是失敗發聲的手機TONE_PROP_ACK
在其日誌中有這條線:
AudioFlinger setParameters(): io 25, keyvalue routing=0, tid 155, calling tid 121
AudioFlinger的用途是什麼?它與靜音TONE_PROP_ACK
有什麼聯繫?
任何idea如何解決我的代碼,使TONE_PROP_ACK永遠聽起來不管手機型號如何?
音頻flinger是系統組件,它在將它交給內核驅動程序之前,管理來自android userpsace的音頻。你是否能夠從任何音調功能中獲得聲音?您是否看到API文檔中關於音頻路由變量的部分?無論如何,你真的想要完成什麼 - 你知道這些音不通過呼叫上行鏈路,對吧? –
@ChrisStratton是的,我知道這些音不通過呼叫上行鏈路。這實際上是我的首選行爲,因爲我只是想提供一個可聽的提示(它不一定是DTMF)。當我使用手機的撥號活動時,我可以從音調功能中聽到聲音。你能詳細說明「音頻路由變量」嗎?我在哪裏可以找到API文檔中的那部分內容?直接URL會超級。感謝+1。 –
'routing = 0'代表'io 25'意味着AudioFlinger正在告訴一個特定的音頻流(我猜這是一個AudioStreamOut),它應該路由到「無處」。音頻HAL將如何處理這是特定於實現的 - 因此它可能會不改變該流的路由。 – Michael