2011-11-07 70 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)工作, ,它更專注於移動電視 - 移動電話,但它也支持移動 - 移動電話。總之,使用常規網絡來做自己並不難,棘手的部分是縮短延遲併爲每個設備選擇正確的方法。)

相關問題