1

私は現在Androidプロジェクトに取り組んでおり、2台のAndroidフォン間の通信を設定するための最良の方法を見つけようとしています。

1台のAndroidスマートフォンは、R/Cカーなどのモバイルプラットフォームにドッキングされます。この携帯電話に、別のAndroid携帯電話から送信された単純な制御信号(「前方」、「後方」、「左」、「右」、「gotoCoordinate」)を受信させたい。また、ドッキングされた電話がステータス信号を返すことができるようにしたいです。

できれば、GPRSを介して通信を行うようにします。私はP2P通信に関する問題を認識しており、現在「Android CloudToDeviceMessaging」を検討しています。(http://code.google.com/android/c2dm/index.html)

Android C2DM(送信から受信までの遅延について聞いてうれしい)の経験と、それを私のプロジェクトで利用することについてのあなたの考えについて聞きたいです。これについて他の提案をいただければ幸いです。この方法を使用して比較的高いレイテンシーに対処する必要があると予想していますが、もちろん、可能な限り低くすることが望ましいです。

4

1 に答える 1

1

C2DM は、メッセージの「配信または順序」について保証しません。また、送信できるメッセージの数に制限があります (高い制限ですが、それでも制限があります)。RCカーの制御のような低遅延のものにはあまり向いていません. 非リアルタイムのイベントに適しています。

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

GPRS を使用して低遅延のものを作成するには、サードパーティのサーバーを独自にセットアップし、両方の電話をそれを介して通信させることができます。まっすぐな TCP ソケットを使用するいくつかの Android アプリでこれを実行しましたが、かなりうまく機能します (UDP を使用すれば、さらに高速で優れたものになります)。GPRS を使用すると、必要に応じてまだ遅延が大きすぎる場合がありますが、それはトレードオフです (非常に便利で、ほとんどの場合、GPRS はありますが、他の方法はそうではありません)。

これを行う理想的な方法は、利用可能なものをすべて組み合わせて適切にフォールバックし、接続後に遅延をテストして、ネットワークが標準に達していることを確認するか、救済することです. たとえば、利用可能な場合は、ローカル WiFi ネットワークを使用します。つまり、起動時に両方のデバイスをサードパーティのサーバーに「登録」し、両方が同じ WiFi 上にある場合は、直接通信するだけです (サーバーを実行するか両方で、クライアントを一方または両方で実行し、登録から発見などに関する情報を取得します)。Wi-Fi に接続していない場合は GPRS にフォールバックしますが、もちろん遅延が増えることに注意してください。最後に、メソッドが確立されたら、いくつかのテスト メッセージを送信してレイテンシを確認します。

これは実際には「答え」ではないことはわかっています。これは、これについての意識の流れですが、コメントには収まらないので、役立つかもしれないと思いました;)。

(完全な開示: 私は、複数のモバイル デバイスと複数の TV を接続する Android アプリに取り組んできました。GPRS 経由のもの、Wifi 経由のもの、直接のものなどがあります。私は、そのようなもののプラットフォームを作成する会社 (MOVL) で働いています。一般的に、通常のネットワーキングを自分で行うのはそれほど難しくありませんが、注意が必要な部分は、遅延を減らし、各デバイスに適した方法を選択することです.)

于 2011-11-07T15:23:44.430 に答える