2016-04-09 14 views
0

Es gibt viele Fragen zum Verständnis des Zeitstempels im Sensorereignis.
Ich habe versucht, meinen eigenen Weg, wie folgen die reale Ereigniszeit in Nanosekunden zu erhalten:
(System.currentTimeMillis()-SystemClock.uptimeMillis())*1000000 + event.timestampSensor Zeitstempel Berechnung Fehler

System.currentTimeMillis()-SystemClock.uptimeMillis()
Dies ist das System Startzeit in Millis zu bekommen.

System.currentTimeMillis()-SystemClock.uptimeMillis()*1000000
Machen Sie es in Nanosekunde.

Die ganze Idee ist System Startzeit + Betriebszeit bis Ereignis.

Ich benutze folgendes Debug:
Calendar cl = Calendar.getInstance(TimeZone.getTimeZone("Hongkong")); cl.setTimeInMillis(((System.currentTimeMillis()-SystemClock.uptimeMillis())*1000000 + event.timestamp) /1000000);

Log.v(LOGTAG, "event happened at: " + cl.get(Calendar.DAY_OF_MONTH) + ":" + (cl.get(Calendar.MONTH)+1) + ":" + cl.get(Calendar.YEAR) + " " + cl.get(Calendar.HOUR_OF_DAY) + ":" + cl.get(Calendar.MINUTE) + ":" + cl.get(Calendar.SECOND));

Was bekommt, ist die Zeit mit Fehlern, gleichem Datum mit etwa einem halben Stunde später.
Weil nicht eine Stunde Fehler, nehme ich an, dass es nicht mit der Zeitzone zusammenhängt.

Ich hoffe, Vorschlag zu sehen.
Danke

+0

plötzlich der Fehler zu 20 Stunden gehen – user3042713

Antwort

0

Das Problem liegt an ROM-Fehler.
Dies ist ein nicht offizieller ROM und mit einer schnellen Neustartfunktion.
Es setzt die Systembetriebszeit, aber nicht den Ereigniszeitstempel zurück.
Wenn kurz nach dem Neustart des Systems der Ereigniszeitstempel nicht 0/1 ist, ist dies eine kleine Zahl, stattdessen ist es die Nanosekunde seit Ihrem letzten echten/harten Neustart.