/ / Jak porównać przestój MotionEvent z zegarem, jaka jest jego podstawa czasowa? - android, kotlin, android-event

Jak porównać przestój MotionEvent z zegarem, jaka jest jego podstawa czasowa? - android, kotlin, android-event

Próbuję określić porządek chronologiczny MotionEvent vs coś, co dzieje się okresowo w moim obiekcie UI.

private var rotateFinishTime: Long = -1
....
fun somethingHappensPeriodically() {
Log.d(tag_, "show new round")
...
this.rotateFinishTime = SystemClock.elapsedRealtime()
}

Mam dołączony GestureDetector.OnGestureListener:

   override fun onSingleTapConfirmed(gd: GestureDetector, e: MotionEvent): Boolean {
// for tap: since it comes delayed, have to check event time
if (e.downTime < this.rotateFinishTime || this.rotating) {
Log.d(tag_, "e.downTime: $e.downTime rotateFinishTime: $rotateFinishTime downTime - rotateFinishTime: ${e.downTime - rotateFinishTime} rotating: $rotating")
return true
}
... do stuff
}

e.downTime: 4763800 rotateFinishTime: 18832541 downTime - rotateFinishTime: -14068741 obracanie: fałsz

Tak więc upływające czasy w czasie rzeczywistym nie wydają się byćpodstawa czasu. Oczywiście, czas epoki unix też nie pasuje. Interesująca notka: obliczenia dają "oczekiwane" wyniki na emulatorze qemu, ale nie na moim urządzeniu z zapasem systemu Android 6.0.

Odpowiedzi:

0 dla odpowiedzi № 1

Myślę, że znalazłem to: powinienem zadzwonić SystemClock.uptimeMillis() dokonać ważnego porównania. Dokumentacja jest ukryta w InputEvent, nie recytuje ani nie odtwarza w MotionEvent:

/ ** * Odzyskaj czas wystąpienia tego zdarzenia, * w{@link android.os.SystemClock # uptimeMillis} podstawa czasu. * * @return Zwraca czas wystąpienia zdarzenia, * w bazie czasowej {@link android.os.SystemClock # uptimeMillis}. * /

Oczywiście emulator nigdy nie zapadł w głęboki sen!