前台服务中的AudioTrack没有足够的CPU时间

时间:2014-04-30 00:53:40

标签: java android android-service audiotrack

我有一个应用程序将处理后的音频字节流式传输到AudioTrack。 AudioTrack的缓冲区大小设置为4K,并以2K块的形式提供数据。它在服务中的线程中运行,当它关联的Activity位于前台时,它通过bindService()和startService()运行。

当Activity暂停时,例如按主页按钮,服务会调用startForeground(),并显示Notification。问题是当处于startForeground()状态时,音频偶尔会出现乱码或失真,但当关联的Activity在前台并且正在运行时,则完全正常。应该注意的是,当音频失真时,AudioTrack不报告任何缓冲器下溢。

我可以通过将AudioTrack的缓冲区提高到32K来解决这个问题,但这对我的应用来说并不理想。

这有什么解决方案吗?我试过打电话

Thread.currentThread().setPriority(Thread.MAX_PRIORITY);

在我的Runnable的run()方法中,但它没有帮助。

0 个答案:

没有答案