3

TCPソケットを介して別のAndroid携帯電話またはPCに送信するAndroidアプリケーションがあり、送信者と受信者のクロックを同期させたい。androidでSystemClock.setCurrentTimeMillisを試しましたが、権限android.permission.SET_TIMEを使用しても機能しません。別の方法はありますか?

4

2 に答える 2

5

残念ながら、android.permission.SET_TIMEを設定する権限がないため、Androidフォンの時刻をコードから変更することはできません。ルート化された電話でのみ変更できます。

だから、インターネット時間のような信頼できるソースから両方のアプリケーションを更新させてみませんか。多分アンドロイドsntpクライアントを使用してください

 //Sample usage:
 SntpClient client = new SntpClient();
 if (client.requestTime("time.nist.gov")) {
    long now = client.getNtpTime() + SystemClock.elapsedRealtime() -    client.getNtpTimeReference();
  }

または、あなたができることは次のとおりです。データを受信するために使用しているプログラムを介して、携帯電話の現在の時刻をPCに送信し、PCの時刻を設定します。こちらもご覧ください:モバイルの日時を設定する

于 2012-10-10T13:53:23.763 に答える
1

私はあなたのアプリケーションを知りませんが、そのようなクロックを同期させることは少しパッチのようです。そのためには、NTP(ネットワークタイムプロトコル)を使用することをお勧めします。Androidだけでなく、Windows、MAC、Linuxマシンでもそれが可能です。あなたのAndroidマシンはセルタワーまたはWIFIからそれを行います。最近、Android用のセルモデムを移植しました。ログを詳しく調べたところ、ネットワークが接続されるたびに、1日に数回、時刻の同期が非常に頻繁に行われていることがわかりました。ネットワークソース(セルまたはwifi)を切り替える場合でも、かなり正確です。シンプルで、コードを書く必要はありません。有効にするように設定するだけです。

結果は、公式のネットワークソースから設定されたPCとAndroidの時間です。

于 2012-10-10T14:06:28.850 に答える