我在我的Android apps
之一中使用了openSL
ES。當應用程序在前臺時,回調非常規則。麥克風回調大約每10ms調用一次,揚聲器回調也是如此。但是,如果我將應用程序放在後臺並打開瀏覽器(或其他應用程序),則可以看到在打開瀏覽器(或瀏覽)時觸發了「回調風暴」。有沒有辦法解決這個問題?爲什麼會發生? openSL補償一段時間無法執行回調嗎? (就像它試圖趕上)。openSL ES Android:不規則音頻回調
我的源代碼在C
和我在Jelly Bean 4.3.
我試圖增加AudioTrack
和AudioRecorder
線程的優先級,並且它似乎幫助,但我不知道那是辦法走。
其他問題
你是說,即使增加線程優先級你可能會得到回調一陣,你應該放棄那些?
這是一個很好的解決方案嗎?您將丟棄麥克風包(或者耗盡揚聲器包的來源),對吧?如果不丟棄話筒包,話筒包的接收器會將話筒包的突發解釋爲過度的抖動,對吧?
更重要的是:我手動增加了AudioTrack和AudioRecorder的線程優先級,並將sched策略改爲循環法。它需要同時訪問和安裝BusyBox(隨命令行util改變線程優先級/調度策略)。這是如何通過編程從C完成的?我想確保它是增加的單個線程優先級,而不僅僅是我的應用程序(進程)的優先級。
您是否因*缺失*回調而遭遇風暴?或者超出你的預期? – marko
我在他們缺席之後得到了延遲迴調的風暴。 – user1884325
當您的應用程序進入後臺時,您是否遇到任何音頻斷斷續續或退出? – rmigneco