人々!元の質問に含めようと思ったのですが、しませんでした。
投票中、投票した理由をコメントすることができます。
学習者が自分のことを成し遂げたり、自分の考えや問題をより良い方法で他の人に伝えたりするために使用してください。誰もがあなたの考えを知っているわけではありません。ありがとう
要するに: 2 つの Android Phone (互いに近くに配置されているかどうか、どちらの場合も) のクロックを互いに同期し、数ミリ秒 (最大 10、20 ミリ秒) の精度で同期する必要があります。
- クロックを同期するか
- または、一方から他方へのオフセットを取得します
私がやっ ていること: さまざまな GSM ネットワーク統計を測定するために使用している開発済みのアプリがあります。テレフォニー マネージャーを使用して 3 つの状態 (OFF-HOOK、IDLE、RINGING) を取得しています。電話 A が電話 B に電話をかけます。両方の電話は、上記の状態に関するタイムスタンプを保存するアプリを実行しています。多くの呼び出しを行った後、タイムスタンプをデータ ファイルにエクスポートし、それらを分析してさまざまなネットワーク統計を取得します。
私の問題は何ですか: 統計を取得するには、タイムスタンプをクロスマッチさせる必要があります。ここでの問題は、電話の時計が同期されていない場合、正確な統計を取得できないことです (たとえば、電話 A が通話を開始してから電話 B が呼び出し状態になるまでにかかる時間は?)。
試したこと:これまでのところ、時計を NTP、GPS、または原子時計と同期させようとしました。ClockSync (Android アプリ) を使用して、原子時計から両方の電話時計のオフセットを取得しました。問題は、このオフセットが、電話からサーバーへのネットワーク パケットの RTT に依存することです。オフセットを 2 回チェックすると (タップ リフレッシュを 2 回続けて)、最大 100 ミリ秒の差が生じます。両方の電話機のオフセットにより、最大 200 ミリ秒のエラーが発生する可能性があり、これは私には受け入れられません。
他のすべての同期アプリ/方法には同じ問題があります。
今後の可能性:(私の考え)。私はアプリを開発するかもしれません
- 電話機 A でタイムスタンプを取得する
- BluetoothまたはWiFi(同じルーターに接続)を介して電話Bに転送し、
- 次に、B はそのタイムスタンプを自身のクロックと比較し、オフセットを計算します。
- オリジナルのアプリを実行し、実験を行い、
- データを処理する前に、オフセットを使用してタイムスタンプを修正します
あなたのコメント/提案:やり方は? そして、最後の部分で説明した方法についてのコメント..