2011-11-07 71 views
1

我目前正在开发一个android项目,我正试图找到设置两个android手机之间通信的最佳方法。Android通信:手机通过3G应用程序控制

一个Android手机将停靠在移动平台上,例如,一辆R/C汽车。我希望这款手机能够接收其他Android手机发送的简单控制信号(“前进”,“后退”,“左侧”,“右侧”,“gotoCoordinate”)。我也希望停靠的手机能够返回状态信号。

最好我想通过GPRS进行通信。我知道有关P2P通信的困难,我目前正在研究“Android Cloud To Device Messaging”。 (http://code.google.com/android/c2dm/index.html)

我想听听关于与Android C2DM你的经验(高兴听到关于延迟从发射到接收)和您的想法在我的项目中使用它。我会很感激关于如何去做这件事的其他建议。我期望使用这种方法必须处理相对较高的延迟,但当然最好是尽可能低。

回答

1

C2DM不保证邮件的“传送或订购”,并且它可以发送的邮件数量有限(上限,但仍然是限制)。这不是真正的低延迟的东西,如控制一辆遥控车。非实时事件更好。

http://code.google.com/android/c2dm/

对于较低的延迟东西使用GPRS你可以设置你自己的第三方服务器,并让这两款手机通过它进行通信。我已经为几个使用直接连接的TCP套接字的Android应用程序完成了这项工作,它的工作原理相当不错(如果你使用UDP,速度会更快/更好)。使用GPRS可能仍然有太多的延迟,这取决于您的需求,但这是一种折衷(非常方便,几乎总是存在,其他方法则不是)。

要做到这一点的理想方法是将任何可用和优雅回退结合起来,并测试连接后的延迟时间,以确保网络达到标准或保释状态。例如,如果可用,请使用本地WiFi网络。也就是说,两台设备在启动时都要与第三方服务器“注册”,如果它们都在同一个WiFi上,只需让它们直接通信(在一台或两台服务器上运行服务器,在一台或两台服务器上运行客户端,从注册中获得关于发现等的信息)。如果他们没有使用WiFi,那么可以使用GPRS,但是当然会意识到会有更多的延迟。最后,一旦建立了任何方法,请发送一些测试消息来检查延迟。

我知道这不是一个真正的“答案”,它更像是一种意识流,但它不适合评论,我认为这可能会有所帮助;)。 (完全公开:我已经开发了Android应用程序,可以连接多个移动设备和多台电视机,有些可以通过GPRS,有些Wifi,有些可以直接使用。我为一家公司(MOVL)工作, ,它更专注于移动电视 - 移动电话,但它也支持移动 - 移动电话。总之,使用常规网络来做自己并不难,棘手的部分是缩短延迟并为每个设备选择正确的方法。)

相关问题