summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/incallui/CallCardPresenter.java11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/com/android/incallui/CallCardPresenter.java b/src/com/android/incallui/CallCardPresenter.java
index 6262deae..8a6e435c 100644
--- a/src/com/android/incallui/CallCardPresenter.java
+++ b/src/com/android/incallui/CallCardPresenter.java
@@ -27,6 +27,7 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.telecom.Call.Details;
+import android.os.SystemClock;
import android.telecom.DisconnectCause;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
@@ -76,6 +77,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
private Context mContext;
private boolean mSpinnerShowing = false;
private boolean mIsFullscreen = false;
+ private long mBaseChronometerTime = 0;
public static class ContactLookupCallback implements ContactInfoCacheCallback {
private final WeakReference<CallCardPresenter> mCallCardPresenter;
@@ -250,10 +252,13 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
// Start/stop timers.
if (isPrimaryCallActive()) {
Log.d(this, "Starting the calltime timer");
+ mBaseChronometerTime = mPrimary.getConnectTimeMillis() - System.currentTimeMillis()
+ + SystemClock.elapsedRealtime();
mCallTimer.start(CALL_TIME_UPDATE_INTERVAL_MS);
} else {
Log.d(this, "Canceling the calltime timer");
mCallTimer.cancel();
+ mBaseChronometerTime = 0;
ui.setPrimaryCallElapsedTime(false, 0);
}
@@ -437,9 +442,9 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
} else if (!isPrimaryCallActive()) {
ui.setPrimaryCallElapsedTime(false, 0);
mCallTimer.cancel();
- } else {
- final long callStart = mPrimary.getConnectTimeMillis();
- final long duration = System.currentTimeMillis() - callStart;
+ mBaseChronometerTime = 0;
+ } else if (mBaseChronometerTime > 0) {
+ final long duration = SystemClock.elapsedRealtime() - mBaseChronometerTime;
ui.setPrimaryCallElapsedTime(true, duration);
}
}