我在我的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