首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:精确定时播放音频

Android:精确定时播放音频
EN

Stack Overflow用户
提问于 2012-04-14 11:04:22
回答 1查看 1.1K关注 0票数 3

我正在写一个安卓应用程序,播放音乐使用录制的样本(使用SoundPool)。我有一个播放器,检查我必须根据当前时间(realTimeElapsed)播放哪些样本。播放器通过我设置为1毫秒的计时器进行更新。大多数情况下,这可以正常工作,但有时我会有一些大约100毫秒的延迟。

我找不到一种方法来提高定时器的优先级,有没有其他方法来解决这些延迟?

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

谢谢

编辑:

我用TraceView对其进行了分析:音频线程(Thread16)每毫秒执行一次。但在t=2580有大约200毫秒的中断。在此期间,线程并未处于睡眠状态,而是在方法SoundPool.play中,并被中断。每次我有这样的延迟,音频线程都会被中断。没有一种方法可以防止这些中断吗?

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

右键单击图像并选择“显示图像”或其附近的内容以查看全分辨率图像。

EN

回答 1

Stack Overflow用户

发布于 2012-04-14 12:57:09

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

如果不是,也许只是一个带有短Thread.Sleep()的线程,并检查System.nanoTime()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10150670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档