首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >同时在多个设备上触发操作

同时在多个设备上触发操作
EN

Stack Overflow用户
提问于 2019-11-10 17:58:28
回答 1查看 726关注 0票数 2

我正试图同时在多台设备上触发我的Android应用程序中的一个动作(或者以尽可能低的延迟/移位)。

这些设备非常相似(品牌、型号、版本),通过USB连接到Macbook Pro上。到目前为止,我有4个设备,但最终解决方案将包括更多,所以我需要一个解决方案,与许多设备工作。

我尝试过在Wifi和USB上使用套接字(Socket.io和常规WS),但是每个设备的延迟略有增加,因此操作不会同步触发。

我还试着通过USB发送一个广播UDP数据包,这样可以得到更好的结果,但看起来非常不一致:最大延迟从10到100 to。

同步时钟是我正在考虑的另一个选择,但不确定它能在许多设备上达到多高的精度(在Android上NTP似乎很棘手)。

有解决这种需求的想法或模式吗?谢谢!

编辑

因此,在进行了一些测试之后,最准确的选择是按照Sam的建议(我正在使用这个图书馆)使用NTP同步设备时钟。我设法在我的4个设备之间实现了平均5毫秒的移动。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-12 11:59:33

首先是一些意见:

  1. 移动设备倾向于大力关闭NIC以节省电力(我不确定这在多大程度上受到它们目前是否正在充电)
  2. 如果它们不被使用,它们也会节流CPU频率,并且可能需要一段时间(即毫秒)才能使它们恢复到速度。考虑到您的设备都是“相同的”,您的测量结果的差异可能会被其他运行的应用程序所主导。
  3. 测量应用程序响应的延迟似乎并不简单,通过网络这样做可能会增加差异,因为所有设备都在相互竞争(请注意,USB是一个“串行总线”,所以这也适用于此)。这取决于这有多重要,是否值得设置摄像机并观看他们的屏幕

也就是说,我很想依靠他们的时钟来做这件事。NTP同步可能是很棒的(例如,亚毫秒精度非常容易),但对于移动设备可能不是这样(我认为Android客户机更关心的是电源,而小于几秒的任何东西对人类来说都是可以的)。尽管如此,他们的时钟应该是相当稳定的,所以让您的客户登记(随机,所以有较少的网络争用,并做了几次,以使NIC是适当地打开)。客户端可以使用它来计算出“事件”的时间,然后睡到之前的几毫秒。然后,他们可以醒来,做一个繁忙的循环检查时间(以确保CPU已启动),然后继续在适当的时间。

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

https://stackoverflow.com/questions/58791452

复制
相关文章

相似问题

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