繁体   English   中英

如何在Android应用中以正确的时间发送数据?

[英]How do I send data with accurate timing in Android app?

我有一个场景,其中有一些从MIDI文件中获取的定时数据。 当需要播放MIDI音符时,我需要通过UDP发送命令。 基本上,我的指令说“播放笔记A,等待125毫秒,播放笔记B,等待300毫秒,播放笔记C ...”,每次“播放笔记X”时,我都需要通过UDP发送数据。 我已经尝试过使用TimerTask和带有循环的简单线程,这些线程可以检查系统时间并计算经过了多少时间,并据此决定是否演奏音符,但是这两种方法似乎都存在计时问题。 TimerTask不能完全按照指定的时间间隔运行(在文档中已说明),因此我得到了不稳定的消息。 该线程工作得更好,但有时我仍会感到困惑,因为其他线程对此具有更高的优先级。

是否有更好的方法以更准确的时间发送此数据? 我可以使用Java中的Clip界面来播放音频吗?

非常感谢您的协助。

这是注定要失败的方法。 让我在这里计算问题:

1)Android不是实时操作系统。 Linux(基于Linux的系统)也不是。 期望ms级时序能够正确正确地执行永远是行不通的。 即使时钟足够精确,以1ms的速率中断,也无法保证Linux会安排线程进行唤醒。

2)TimerTasks即使在受1限制的程度内也不保证是准确的。

3)然后通过UDP将其发送到某个地方? 一种协议,对于向接收方然后将对其进行处理的接收方而言,无法保证传递或定时,并且该接收方可能会自己承担其他定时问题。

抛弃整个方法并重新开始是我的建议。 每一步都说不好的主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM