如何同步显示多个Android设备?

时间:2013-11-14 11:32:10

标签: android google-chrome synchronization

我正在考虑使用多个Android设备(例如Nexus 7平板电脑)来构建照片/视频墙,我想知道a)是否可能和b)如何同步所有这些设备的显示。 Google展示了其Chrome racer实验,因此很明显可以在多台设备上同步显示。

所以这是我的问题:

  • 我应该使用什么技术来同步显示器? Android的?铬?如果可能,请指出现有代码。
  • 在这种设置中可以实现的设备之间的最小延迟是多少?
  • 还可以在多个设备上同时启动视频和声音播放(想想视频墙)?
  • 这样的项目应该考虑什么样的架构?发送命令的集中服务器?设备应该相互通信吗?

我对建议很好奇!

修改 blinkendroid是迄今为止我发现的唯一可以完成此任务的应用。优点?缺点?替代?

2 个答案:

答案 0 :(得分:8)

从技术上讲,屏幕不是共享的,游戏状态是共享的,手机都会根据他们的理解呈现状态。

关于Chrome Racer的一些背景知识。我们有case-study on here,但它并未完全涵盖您提出的问题。

Racer中用于通信的主要技术是WebSockets。 WebSockets允许一个客户端以近乎实时的方式从服务器推送和接收消息。

Racer通过为游戏提供唯一ID来启动游戏会话,并为用户保持打开Web Socket。随后加入游戏的任何人都被告知使用相同的ID,服务器也会为他们创建一个Web Socket。现在服务器知道所有参与者。

当游戏开始时,向所有参与者广播消息,要求他们准备好开始,在此阶段,服务器正在计算向所有客户端往返消息所需的时间。它这样做是为了能够解决设备之间的任何延迟,从而尝试弥补较慢客户端的延迟。

现在服务器知道游戏可以正常启动的客户端。当用户正在玩他们的游戏时,他们的命令通过Web套接字被推送到服务器。服务器将此消息中继到所有连接的客户端(如卫星那样),并且它为连接到会话的每个用户执行相同的操作。这就是游戏状态的分享方式。

当每个客户端收到从服务器向其广播的命令时,它会更新其游戏的内部表示并将其呈现给屏幕。

这就是它。

实际上,我们希望使用WebRTC Data Channel,因为它可以减少数据到达客户端所需的跃点数。在我们今天的解决方案中,客户端ping服务器并且服务器中继消息(2跳),如果我们可以将其直接发送给其他用户(这是WebRTC的目标),我们可以将延迟减少一半。不幸的是,WebRTC在当时并没有普及到足以将其作为解决方案部署。

答案 1 :(得分:0)

Websockets意味着网络。您不需要网络在同一个物理位置同步多个设备...对于视频/音乐同步,通过蓝牙或WiFi等本地离线技术的原生应用听起来更可靠。