2016-04-09 19 views
0

センサイベントのタイムスタンプを理解することには多くの疑問があります。
二ナノで実際のイベント時刻を取得するために従うように私は自分自身の方法を試してみました:
(System.currentTimeMillis()-SystemClock.uptimeMillis())*1000000 + event.timestampセンサタイムスタンプ計算エラー

System.currentTimeMillis()-SystemClock.uptimeMillis()
をこれは、ミリ秒単位のシステムの開始時刻を取得することです。

System.currentTimeMillis()-SystemClock.uptimeMillis()*1000000
ナノ秒単位で作成してください。

全体のアイデアは、システムの開始時間+イベントの稼働時間です。私はデバッグに次の使用


Calendar cl = Calendar.getInstance(TimeZone.getTimeZone("Hongkong")); cl.setTimeInMillis(((System.currentTimeMillis()-SystemClock.uptimeMillis())*1000000 + event.timestamp) /1000000);

Log.v(LOGTAG, "event happened at: " + cl.get(Calendar.DAY_OF_MONTH) + ":" + (cl.get(Calendar.MONTH)+1) + ":" + cl.get(Calendar.YEAR) + " " + cl.get(Calendar.HOUR_OF_DAY) + ":" + cl.get(Calendar.MINUTE) + ":" + cl.get(Calendar.SECOND));

取得で何が約半分の時間後にエラー、同日付での時間です。
1時間のエラーではないため、タイムゾーンに関連していないとみなします。

希望をお待ちしています。
ありがとう

+0

突然エラーが20時間になる – user3042713

答えて

0

問題はROMのバグが原因です。
これは公式ではないROMで、クイックリスタート機能を備えています。
システムのアップタイムはリセットされますが、イベントタイムスタンプはリセットされません。
システムのクイックリスタート直後に、イベントタイムスタンプがこの種の小さい0/1ではなく、最後の実際の/ハード再起動からナノ秒です。