Bluetooth: Use elapsed real time for calculating onDuration

The system time can change after boot. Using elapsed real time avoids
this problem.

Test: start factory reset device, adb shell dumpsys bluetooth_manager
Change-Id: Ieea2a2bc8b4bcb375897e609275207b6c3eccdce
Fixes: 62985817
This commit is contained in:
Marie Janssen
2017-06-26 07:21:03 -07:00
committed by Myles Watson
parent dd5384a4fe
commit 12a3501abf

View File

@@ -195,6 +195,7 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
private LinkedList<ActiveLog> mActiveLogs;
private LinkedList<Long> mCrashTimestamps;
private int mCrashes;
private long mLastEnabledTime;
// configuration from external IBinder call which is used to
// synchronize with broadcast receiver.
@@ -2021,6 +2022,7 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
mHandler.sendMessage(mHandler.obtainMessage(MESSAGE_ENABLE,
quietMode ? 1 : 0, 0));
addActiveLog(packageName, true);
mLastEnabledTime = SystemClock.elapsedRealtime();
}
private void addActiveLog(String packageName, boolean enable) {
@@ -2142,7 +2144,7 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
writer.println(" address: " + mAddress);
writer.println(" name: " + mName);
if (mEnable) {
long onDuration = System.currentTimeMillis() - mActiveLogs.getLast().getTime();
long onDuration = SystemClock.elapsedRealtime() - mLastEnabledTime;
String onDurationString = String.format("%02d:%02d:%02d.%03d",
(int)(onDuration / (1000 * 60 * 60)),
(int)((onDuration / (1000 * 60)) % 60),