Tôi biết rằng đó là một câu hỏi rất cũ, nhưng, tôi cũng đang đấu tranh để chuyển đổi SensorEvent.timestamp
thành thời gian có thể đọc được của con người. Vì vậy, tôi đang viết ở đây những gì tôi đã hiểu cho đến nay và làm thế nào tôi đang chuyển đổi nó để có được giải pháp tốt hơn từ các bạn. Mọi bình luận sẽ được hoan nghênh.
Như tôi đã hiểu, SensorEvent.timestamp
là thời gian trôi qua kể từ khi khởi động thiết bị. Vì vậy, tôi phải biết thời gian hoạt động của thiết bị. Vì vậy, nếu có một khởi động lại thiết bị API, nó sẽ rất dễ dàng, nhưng, tôi đã không tìm thấy nó. Vì vậy, tôi đang sử dụng SystemClock.elapsedRealtime()
và System.currentTimeMillis()
để 'ước tính' thời gian hoạt động của thiết bị. Đây là mã của tôi.
private long mUptimeMillis; // member variable of the activity or service
...
atComponentsStartUp...() {
...
/* Call elapsedRealtime() and currentTimeMillis() in a row
in order to minimize the time gap */
long elapsedRealtime = SystemClock.elapsedRealtime();
long currentTimeMillis = System.currentTimeMillis();
/* Get an uptime. It assume that elapsedRealtime() and
currentTimeMillis() are called at the exact same time.
Actually they don't, but, ignore the gap
because it is not a significant value.
(On my device, it's less than 1 ms) */
mUptimeMillis = (currentTimeMillis - elapsedRealtime);
....
}
...
public void onSensorChanged(SensorEvent event) {
...
eventTimeMillis = ((event.timestamp/1000000) + mUptimeMillis);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(eventTimeMillis);
...
}
Tôi nghĩ tính năng này hoạt động đối với Ứng dụng là lỗi thời gian một phần nghìn giây. Xin vui lòng, để lại ý tưởng của bạn.
Nguồn
2016-02-17 14:09:39
Xem ở đây: http://stackoverflow.com/questions/3498006/sensorevent-timestamp-to-absolute-utc-timestamp – goto10