2台以上のモバイルAndroidデバイスでリズム再生を同期する方法を見つけようとしています。
WiFi / LANで優れた精度を実現するのは簡単ですが(レイテンシーが非常に低い)、レイテンシーが変動する3Gネットワークに適したソリューションが必要です。
私が思いついたアイデアの1つは、メッセージの送信とタイミング調整、および平均タイムスパンを使用したレイテンシーの補正ですが、このアイデアはばかげているようで、これを解決する他の方法があると確信しています。
助けてくれませんか?
まず最初に、参照として使用できるすべてのデバイス間で可能な限り近い同期クロックを作成しようとします。
デバイスが通信するとき、デバイスは常にメッセージとのローカル同期時間を含みます。これにより、メッセージを受信したときと送信されたときの違いを常に把握でき、メッセージにビートを再生する必要があることを常に知ることができます。すべてのデバイスで同じです。
ここでの時計の同期の本当の難しさは、この記事を読むことから始めますhttp://en.wikipedia.org/wiki/Network_Time_Protocol
ここにJAVAベースのNTPクライアントがあります:http: //commons.apache.org/net/examples/ntp/NTPClient.java
それが機能するようになれば、世界中に多数のNTPサーバーがあります。 http://www.pool.ntp.org/en/use.html
私は最近、まったく同じ質問を自分で解決しようとしました。私が見つけた最良の解決策は、NTP(Network Time Protocol)でした。
主な欠点は、待ち時間の長いネットワークで同期するのに長い時間がかかる可能性があることです。そのため、デバイスを同期する必要がある前に、かなりの時間実行されているアプリを用意する必要があります。
私が取り組んでいるアプリケーションはまだ完璧なタイミングでテストされていないので、これが実行可能なソリューションであるとは約束できません。しかし、試してみる価値はあります。
デバイスが十分に接近している場合は、Bluetoothを使用してピアツーピア同期を高速化し、NTPを使用してグローバル時間を取得できるかどうかを確認できます。おそらくBluetoothにリンクされた電話を追加のリモコンとして追加します。 NTP構成。これには、エンドユーザーデバイスのペアリングが必要になり、問題になる可能性があります。