2016-07-30 84 views
1

我正在开发一个简单的项目,在该项目中,我需要通过互联网通过Android电话的Gyroscope Sensor来控制Arduino机器人(双伺服电机)。 正如您可以看到的一样,即使3D空间中Phone的方向变化很小,3轴Gyroscopic Coordinates也会非常敏感地变化,所以我想将延迟最小化为毫秒。如何在Android上使用WebRTC进行实时通信?

现在除了硬件之外,我的第一个里程碑是通过互联网尽可能快速和持续地发送陀螺仪坐标从Android到计算机(如实时数字数据流)。我知道传统HTTP based Client-Server机制将是相当缓慢的,因此我看着到以下几点:

  1. 谷歌的香奈儿API
  2. 的WebRTC
  3. 的WebSockets

根据我的研究,通道API显示从10ms到甚至在几秒钟内的延迟。 GAE也将请求限制为30秒。这里是一个频道API压力测试: http://channelapistresstest.appspot.com/ 尝试点击“发送5”按钮很多,你会看到延迟时间数字上升到几秒钟。

现在WebRTC听起来最有前途且比WebSocket更快。如果有人能够指导我如何在Native JAVA和Native Android中实现WebRTC,我将非常感激(任何好的库?我想从Android发送coords并通过桌面上的JAVA-SE客户端接收)。我对混合应用程序解决方案不感兴趣(如Crosswalk)。我还想知道应该如何设置信令服务器。总结它我有以下问题:

  1. 我应该使用哪种方法? (通道API,WebSockets,WebRTC或其他)与本地Java和Android支持?
  2. IncR的WebRTC,我应该如何设置信令服务器? (只是简要说明)还是WebSocket的WebSocket服务器?
  3. 我可以利用Google的云平台或类似的东西来降低我的复杂性吗?
  4. 任何整体建议?

在此先感谢。

回答

2

我会忽略此项目的WebRTC。设置更复杂,需要一个特殊的服务器。
WebSocket对于这个项目应该不错。它与TCP一样快。
如果你想不惜一切代价尽量避免这种延迟,但丢包不是问题,那么我会选择简单的UDP。对于所有这些,你不需要任何库,只需几行代码。

2

你不想使用WebRTC。 WebRTC无论如何都要求你设置一个独立的信号通道,比如WebSockets,所以对于你所要做的事情来说它是不必要的复杂和非常重要的。

如果您的要求很简单,就是从一个设备到另一个通信的一系列陀螺仪值,我建议:

  1. 开始用一个简单的socket服务器
  2. 通过socket
  3. 您的客户端连接到这台服务器
  4. 从一个客户端传送信息给其他

A simple server to print socket input to standard output is just a few lines of Python,例如。这确实要求您学习使用套接字,因为您的客户端需要以相同的方式解释字节流。您也可以使用WebSockets,但这可能会显着增加服务器的复杂性;例如,Java EE比Java SE复杂得多。

如果你想要数据完整性(我想你会这样做),你应该使用TCP。

如果你真的担心延迟,你应该跳过去互联网。在局域网上运行一切。我想你无论如何都得控制设备,所以没有必要去上网。

相关问题