Ich habe wifiManager.startScan() verwendet; um die Daten von Wi-Fi-Access-Points in der Nähe zu erhalten. Dies wird als eine Liste von ScanResult zurückgegeben. Diese Klasse ist hier zu finden: http://developer.android.com/reference/android/net/wifi/ScanResult.html#timestampAndroid ScanResult Timestamp Feld - Wie genau ist es?
Ich verstehe, dass das Zeitstempelfeld von ScanResult
istZeitstempel in Mikrosekunden (seit Start), wenn dieses Ergebnis wurde zuletzt gesehen.
So verwende ich einige Berechnungen den tatsächlichen Zeitstempel, wenn der Access Point erhalten wurde von der Smartphone-Gerät gesehen:
long actualTimestamp = System.currentTimeMillis() - SystemClock.elapsedRealtime() + (scanResult.timestamp/1000);
Dies funktioniert gut, aber ich habe einige seltene interessante Ergebnisse mit :
15:04:01 28-03-2016 - 1459173841
22:50:44 07-06-2016 - 146533624 4
15.04.21 28-03-2016 - 1459173861
Hinweis über den Eintrag für Juni 2016, ein Datum in der Zukunft, die unter den anderen Messwerten gelegt wird gesammelt aus der Liste .
Was könnte hier passieren? Ist mein Code etwas falsch? Ist der Zeitstempelwert gelegentlich ungenau? Hat das schon mal jemand erlebt?
Edit: Ich teste dies auf Nexus 5 Marshmallow-Gerät. MinSDK 18, Target 23
ich einige Ergebnisse bekommen, die ich entweder nicht trauen. Ich versuche Ergebnisse zu filtern, die älter als X ms sind, aber ich bin mir ziemlich sicher, dass dies zu einer Liste führt, die Scanresults enthält, die nicht vorhanden sein sollten oder eine falsche Signalstärke enthalten (meine App versucht den besten Access Point zu finden) wählt immer APs, die * die besten waren, bevor ich mich auf ein anderes zubewegte), was mich zu der Annahme verleitet, dass der Signalpegel und der Zeitstempel nicht übereinstimmen. – REJH
Kommen Sie, um darüber nachzudenken .. vielleicht ein Problem auf dem AOSP-Bug-Tracker darüber zu schaffen? – REJH
@REJH seit diesem Post konnte ich das Problem an einem Telefon hauptsächlich durch das Bewegen (Gehen, Fahren ect) replizieren. Der Zeitstempel würde in der Zukunft liegen. Auf einem anderen Gerät würde ein Zeitstempel in den Ergebnissen verbleiben, nie entfernt werden, was bedeuten würde, dass er immer veraltet wäre. Es ist sicher anzunehmen, dass wir nicht allen Ergebnissen vertrauen können - aber wir können sie herausfiltern. Zeichnen Sie auf, wenn Sie den Scan starten, und wenn er endet, wählen Sie nur Ergebnisse aus, die zwischen diesem Zeitraum liegen. – Jonty800