我正在编写一个使用录制的样本(使用 SoundPool)播放音乐的 android 应用程序。我有一个播放器,它根据当前时间(realTimeElapsed)检查我必须播放哪些样本。播放器使用我设置为 1 毫秒的计时器进行更新。大多数时候这工作正常,但有时我有大约 100 毫秒的延迟。
我找不到增加计时器优先级的方法,还有其他方法可以解决这些延迟吗?
我同时使用 openGL 渲染场景,但如果我禁用所有绘图,我会得到相同的延迟。
谢谢
编辑:
我用 TraceView 分析了它:音频线程(Thread-16)每毫秒执行一次。但是在 t=2580 时有大约 200 毫秒的中断。在此期间线程没有处于睡眠状态,而是在 SoundPool.play 方法中并被中断。每次我有这样的延迟时,音频线程都会被中断。没有办法防止这些中断吗?
我已将 GL 线程(中断音频线程)的优先级设置为 THREAD_PRIORITY_LOWEST。
右键单击图像并选择“显示图像”或附近的东西以全分辨率查看图像。