Android:播放音频的精确时间

时间:2012-04-14 03:04:22

标签: android audio timer

我正在编写一个使用录制样本播放音乐的Android应用程序(使用SoundPool)。我有一个播放器,根据当前时间(realTimeElapsed)检查我必须播放的样本。播放器使用我设置为1 ms的Timer进行更新。大部分时间这种方法都很好,但有时我会有一些约100毫秒的延迟。

我找不到提高计时器优先级的方法,还有另一种方法可以解决这些延迟吗?

我正在使用openGL同时渲染场景,但如果禁用所有绘图,我会得到相同的延迟。

由于

编辑:

我用TraceView分析它:音频线程(Thread-16)每ms执行一次。但是在t = 2580时,有大约200ms的中断。在此期间线程未处于休眠状态,但在方法SoundPool.play中被中断。每次我有这样的延迟,音频线程都会被中断。有没有办法防止这些中断?

我已将GL Thread(中断音频线程)的优先级设置为THREAD_PRIORITY_LOWEST。 TraceView

右键单击图像并选择“显示图像”或靠近该图像以全分辨率查看图像。

1 个答案:

答案 0 :(得分:0)

我建议尝试Handler.postDelayed()而不是Timer,看看你是否会得到更好的结果。

如果没有,可能只是一个短Thread.Sleep()的帖子,并检查System.nanoTime()