Android通信:3G手机对手机应用控制



我目前正在做一个android项目,我正试图找到最好的方法来设置两个android手机之间的通信。

一部android手机将被连接到移动平台上,例如R/C汽车。我想让这款手机接收简单的控制信号("前进","后退","左","右","gotoCoordinate")从另一个安卓手机发送。我还希望连接的手机能够返回状态信号。

最好我希望通过GPRS进行通信。我意识到p2p通信的困难,我目前正在研究"Android Cloud To Device Messaging"。(http://code.google.com/android/c2dm/index.html)

我想听听你对Android C2DM的体验(很高兴听到从发送到接收的延迟)以及你在我的项目中使用它的想法。我希望能就如何处理这件事提出其他建议。我希望使用这种方法处理相对较高的延迟,但当然最好是尽可能低的。

C2DM不保证消息的"传递或顺序",并且它限制了您可以发送的消息数量(限制很高,但仍然是限制)。它并不适用于低延迟的东西,比如控制遥控汽车。它更适合于非实时事件。

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

对于使用GPRS的低延迟内容,您可以自己设置第三方服务器,并让两部手机通过它进行通信。我已经为几个直接使用TCP套接字的Android应用程序这样做了,它工作得相当好(如果你使用UDP,它会更快/更好)。根据您的需要,使用GPRS可能仍然有太多的延迟,但这是一种权衡(它非常方便,几乎总是存在,而其他方法则不然)。

实现这一目标的理想方法是将所有可用的资源结合起来,并优雅地进行回退,并在连接后测试延迟,以确保网络达到标准,否则会退出。例如,使用本地WiFi网络,如果它是可用的。也就是说,让两个设备在启动时都在第三方服务器上"注册",如果它们都在同一个WiFi上,那么就让它们直接通信(在一个或两个设备上运行服务器,在一个或两个设备上运行客户端,从注册中获取有关发现等信息)。如果他们不在WiFi上,那么就回到GPRS,但要意识到这将会有更多的延迟。最后,一旦建立了任何方法,发送一些测试消息来检查延迟。

我知道这不是一个真正的"答案",它更像是一个意识流,但它不适合在评论中,我想它可能会有所帮助;)。

(充分披露:我曾致力于连接多个移动设备和多个电视的Android应用程序,有些通过GPRS,有些通过Wifi,有些直接。我所在的公司(MOVL)为这类东西开发了一个平台,它更专注于移动电视-移动,但它也支持移动-移动。总而言之,使用常规网络并不难,棘手的部分是降低延迟并为每个设备选择正确的方法。

最新更新