2016-03-28 47 views
2

私はwifiManager.startScan()を使用しています。近くのWi-Fiアクセスポイントからデータを受信します。これは、ScanResultのListとして返されます。このクラスは、ここで見つけることができます: http://developer.android.com/reference/android/net/wifi/ScanResult.html#timestampAndroid ScanResultタイムスタンプフィールド - 正確さはどれくらいですか?

私はこの結果を見 最後だったときScanResultのタイムスタンプフィールドは、(ブート以降)マイクロ

タイムスタンプであることを理解しています。

だから私は、アクセスポイントがSmartphoneデバイスで見られたときの実際のタイムスタンプを取得するにはいくつかの計算を使用します。

long actualTimestamp = System.currentTimeMillis() - SystemClock.elapsedRealtime() + (scanResult.timestamp/1000); 

これは正常に動作しますが、私はいくつかの珍しい興味深い結果を持っています:

午前15時04分01秒28-03-2016 - 1459173841

22時50分44秒2016年7月6日 - 146533624 4

午後03時04分21秒28-03-2016 - お知らせ2016年6月、一覧の中から集められた他の読み取り値の間に配置される将来の日付のエントリ上記1459173861

ここで何が起こっている可能性がありますか?私のコードは少し間違っていますか?時々タイムスタンプの値が不正確ですか?誰もこれを経験したことがありますか?

編集:Nexus 5 Marshmallowデバイスでこれをテストしています。 MinSDK 18、Target 23

+0

私はどちらか信頼していないいくつかの結果を取得しています。私はX msよりも古い結果をフィルタリングしようとしていますが、スキャン結果が含まれていないか、不正な信号強度が含まれているリストに結果があることを確信しています(私のアプリは、信号レベルとタイムスタンプが一致していないと私は信じていました)。 – REJH

+0

これについて考えてみてください。おそらく、これについてAOSPのバグトラッカーで問題を作りますか? – REJH

+0

@REJHこの記事では、主に移動(ウォーキング、運転など)を通じて問題を1つの電話で再現することができました。タイムスタンプは将来的に終了するでしょう。別のデバイスでは、結果にタイムスタンプが残っていますが、削除されることはありません。つまり、タイムスタンプは常に古いものになります。すべての結果を信頼できないと推測するのは安全ですが、フィルタリングすることは可能です。スキャンを開始したときに記録し、終了したら、その時間枠の中から結果のみを選択します。 – Jonty800

答えて

1

私は説明があるようです:これはバグです。

時々.timestamp(再起動後のマイクロ秒)は.seen(エポックからの秒数)に等しいことがあります。現在、エポック時間は、マイクロ秒の時間間隔として再解釈された場合、約17日である。

2つの値が明確に等しくすることはできませんので、私は、Androidに提出: https://code.google.com/p/android/issues/detail?id=225218 問題にスターを付けるにはお気軽に:)