Poniżej przykładowy kod używam:Jak mogę dostać kolejne znaczniki czasu dokładnego zapisu do 5 mikro sekund 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);
}
wymagam różnicę wartości czasu i daty późniejsze systemowych w OnSensorChanged (Zdarzenie SensorEvent) po uruchomieniu czujnika.
public void onSensorChanged(SensorEvent event) {
long systemTimeStamp= SystemClock.elapsedRealtimeNanos();
long timeDifference = (systemTimeStamp - prevTime)/1000000; //msec
Log.e("PROBLEM",timeDifference);
prevTime=systemTimeStamp;
}
Powyższa różnica zmienia się na 0 razy wielokrotnie na stronie SENSOR_DELAY_FASTEST // Dlaczego?
Różnica kolejnych raportów znaczników czasu 0, ale zgodnie z definicją powinna raportować czas w nanosekundach, więc przy 5 mikro sekundach różnica nie powinna wynosić zero. Jak mogę uzyskać różnicę różną od zera lub istnieje inny sposób uzyskania różnicy czasu systemowego z dokładnością do 5 mikrosek.
Należy pamiętać, że event.timestamp zgłasza znaczniki czasu czujnika, ale potrzebuję znaczników czasu systemu w zdarzeniu OnSensorChanged (zdarzenie SensorEvent), aby zmierzyć, jak dokładne są znaczniki czasu czujnika, porównując je z rzeczywistymi znacznikami czasowymi systemu.
mówisz systemTimeStamp przez dwa kolejne wywołania zwrotne są takie same, czasami? Jestem pewien, że właśnie tak mówisz, ponieważ czas może wynosić 0, kiedy dzielisz 1000 000, a różnica jest mniejsza niż 1 ms, ale po prostu chcesz się upewnić. – Kaamel
tak, to jest mój problem .. czy istnieje rozwiązanie tego problemu ..? – kapilgm
Pozwól mi spróbować ponownie, ponieważ nie jestem pewien, który z nich jest problemem. Logujesz wartość timeDifference. Czy to ten, który ma 0? Jeśli tak, to jest oczekiwany wynik, gdy rzeczywista różnica między wartościami w nanosekundach jest mniejsza niż 1000000 nanosekund. – Kaamel