我目前正在开发一个Android项目,我正在尝试找到建立两个Android手机之间通信的最佳方式。
一部Android手机将停靠在移动平台上,例如一辆遥控车。我希望这款手机能够接收简单的控制信号("前进","后退","左","右"," gotoCoordinate")从另一个Android手机发送。我还希望对接的手机能够返回状态信号。
我希望通过GPRS进行通信。我已经意识到P2P通信方面的困难,而且我目前正在研究Android Cloud To Device Messaging。" (http://code.google.com/android/c2dm/index.html)
我想了解您使用Android C2DM的经历(很高兴听到从传输到接收的延迟)以及您在我的项目中使用它的想法。我很欣赏有关如何解决这个问题的其他建议。我希望使用这种方法来处理相对较高的延迟,但当然最好尽可能低。
答案 0 :(得分:1)
C2DM不保证邮件的“传递或订单”,并且它可以发送的邮件数量有限(上限,但仍然是限制)。它并不适用于控制RC车等低延迟的东西。对于非实时事件更好。
http://code.google.com/android/c2dm/
对于使用GPRS的低延迟功能,您可以自行设置第三方服务器,让两部手机通过它进行通信。我已经使用直接的TCP套接字为几个Android应用程序做了这个,它运行得相当好(如果你去UDP,它会更快/更好)。使用GPRS可能仍然有太多的延迟,这取决于您的需求,但它是一个权衡(它非常方便,几乎总是在那里,其他方法不是)。
执行此操作的理想方法是将所有可用内容和优先级回退结合起来,并在连接后测试延迟,以确保网络达到标准或纾困。例如,如果可用,请使用本地WiFi网络。也就是说,让两个设备在启动时“注册”第三方服务器,然后如果它们都在同一个WiFi上,只需让它们直接通信(在一个或两个服务器上运行服务器,在一个或两个服务器上运行服务器,从注册中获取有关发现的信息)。如果他们不在WiFi上,那么回到GPRS,但当然会意识到会有更多的延迟。最后,一旦建立任何方法,发送一些测试消息来检查延迟。
我知道这不是一个“答案”,它更多的是关于这一点的意识流,但它不适合评论,我认为它可能会有所帮助;)。
(完全披露:我曾经在连接多个移动设备和多台电视的Android应用程序上工作,有些通过GPRS,有些是Wifi,有些是直接的。我为一家公司(MOVL)工作,为这样的东西建立平台,它更专注于移动电视移动,但它也支持移动移动。总而言之,通过常规网络做自己并不困难,棘手的部分是降低延迟并为每个设备选择正确的方法。)< / p>