2017-10-26 4 views
0

私は、MotionEventの時間順と、UIオブジェクト内で定期的に発生する何かを判断しようとしています。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ダウンタイム - rotateFinishTime: -14068741回転:だから偽

経過時間は時間基準ではないようです。明らかに、UNIXのエポック時間はどちらにも合わない。面白いことに、計算では、qemuエミュレータで「期待される」結果が得られますが、在庫Android 6.0が搭載されたデバイスでは表示されません。

答えて

0

私はそれを見つけたと思います:SystemClock.uptimeMillis()に電話して、有効な比較をする必要があります。 {@link android.os.SystemClock#uptimeMillisに*/**

を*このイベントが発生した時刻を取得し、 :ドキュメントはのInputEventに埋葬され、彼らが暗唱や繰り返し、それをMotionEventではありません}タイムベース。 * * @returnこのイベントが発生した時刻を返します。 *は、時間ベースのandroid.os.SystemClock#uptimeMillisです。 */

明らかに、エミュレータは深い眠りには入らなかった!

関連する問題