Im Folgenden Beispielcode erhalten Ich verwende:Wie kann ich nachfolgende Zeitstempel genau bis zu 5 Mikrosekunden in android
private final SensorManager mSensorManager;
private final Sensor mAccelerometer;
private long prevTime=0;
public SensorActivity() {
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_FASTEST);
}
I die Differenz von nachfolgenden Systemzeitstempel Werte in erfordern OnSensorChanged (SensorEvent Ereignis) Funktion nach dem Sensor gestartet.
public void onSensorChanged(SensorEvent event) {
long systemTimeStamp= SystemClock.elapsedRealtimeNanos();
long timeDifference = (systemTimeStamp - prevTime)/1000000; //msec
Log.e("PROBLEM",timeDifference);
prevTime=systemTimeStamp;
}
Above Differenz 0 wird oft bei SENSOR_DELAY_FASTEST // Warum ??
Der Unterschied der nachfolgenden Zeitstempel meldet 0, aber gemäß der Definition sollte die Zeit in Nanosekunden angegeben werden, so dass bei 5 Mikrosekunden der Unterschied nicht Null sein sollte. Wie kann ich eine Differenz ungleich null erhalten oder gibt es eine andere Möglichkeit, die Differenz der Systemzeitstempel mit einer Genauigkeit von 5 Mikrosekunden zu erhalten.
Beachten Sie, dass event.timestamp Zeitstempel des Sensors meldet, aber ich brauche Zeitstempel des Systems im OnSensorChanged (SensorEvent-Ereignis), um zu messen, wie genau die Zeitstempel der Sensoren durch Vergleich mit den tatsächlichen Systemzeitstempeln sind.
Sie systemTimeStamp für zwei aufeinander folgende Rückrufe sind die gleichen, manchmal sagen die Ich bin mir sicher, dass du das sagst, da die timeDefference 0 werden kann, wenn du dich durch 1.000.000 dividierst und der Unterschied weniger als 1 ms ist, aber du willst nur sichergehen. – Kaamel
Ja, das ist mein Problem .. gibt es eine Lösung für dieses Problem ..? – kapilgm
Lassen Sie es mich erneut versuchen, da ich nicht sicher bin, welches das Problem ist. Sie protokollieren den Wert von timeDifference. Ist das derjenige, der 0 ist? Wenn dies der Fall ist, ist dies das erwartete Ergebnis, wenn der tatsächliche Unterschied zwischen den Werten in Nanosekunden weniger als 1000000 Nanosekunden beträgt. – Kaamel