Как сравнить время простоя MotionEvent с часами, какова его временная база?

Я пытаюсь определить хронологическое упорядочение MotionEvent против того, что периодически происходит в моем объекте пользовательского интерфейса.

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

У меня есть 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 rotating: false

Таким образом, прошедшее в реальном времени, похоже, не является временной основой. Очевидно, что unix-эпоха не подходит. Интересное замечание: расчет дает «ожидаемые» результаты на эмуляторе qemu, но не на моем устройстве с запасом Android 6.0.

    Думаю, я нашел это: я должен вызвать SystemClock.uptimeMillis() чтобы сделать правильное сравнение. Документация похоронена в InputEvent, они не читают или не повторяют ее на MotionEvent:

    / ** * Получить время, в течение которого произошло это событие, * в базе времени {@link android.os.SystemClock # uptimeMillis}. * * @return Возвращает время, в течение которого произошло это событие, * в временной базе {@link android.os.SystemClock # uptimeMillis}. * /

    Очевидно, эмулятор никогда не погружался в глубокий сон!