我有一个应用程序将处理后的音频字节流式传输到AudioTrack。 AudioTrack的缓冲区大小设置为4K,并以2K块的形式提供数据。它在服务中的线程中运行,当它关联的Activity位于前台时,它通过bindService()和startService()运行。
当Activity暂停时,例如按主页按钮,服务会调用startForeground(),并显示Notification。问题是当处于startForeground()状态时,音频偶尔会出现乱码或失真,但当关联的Activity在前台并且正在运行时,则完全正常。应该注意的是,当音频失真时,AudioTrack不报告任何缓冲器下溢。
我可以通过将AudioTrack的缓冲区提高到32K来解决这个问题,但这对我的应用来说并不理想。
这有什么解决方案吗?我试过打电话
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
在我的Runnable的run()方法中,但它没有帮助。