Fix black screen flashing during sip calls
Add the same delayed finish logic that is in OutgoingCallBroadcaster
to SipCallOptionHandler. This is needed because SipCallOptionHandler now
lives in a separate process from InCallActivity, so calling finish
immediately would cause a black screen before the InCallUI comes up.
Bug: 10626098
Change-Id: I84295a0a1dc5d6fa3606a6ab768f84e0d0423c30
diff --git a/src/com/android/phone/SipCallOptionHandler.java b/src/com/android/phone/SipCallOptionHandler.java
index 295e886..5a7e91f 100644
--- a/src/com/android/phone/SipCallOptionHandler.java
+++ b/src/com/android/phone/SipCallOptionHandler.java
@@ -36,6 +36,8 @@
import android.net.sip.SipManager;
import android.net.sip.SipProfile;
import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
import android.os.SystemProperties;
import android.provider.Settings;
import android.telephony.PhoneNumberUtils;
@@ -85,6 +87,21 @@
private boolean mUseSipPhone = false;
private boolean mMakePrimary = false;
+ private static final int EVENT_DELAYED_FINISH = 1;
+
+ private static final int DELAYED_FINISH_TIME = 2000; // msec
+
+ private final Handler mHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ if (msg.what == EVENT_DELAYED_FINISH) {
+ finish();
+ } else {
+ Log.wtf(TAG, "Unknown message id: " + msg.what);
+ }
+ }
+ };
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -208,6 +225,14 @@
setResultAndFinish();
}
+ /**
+ * Starts a delayed finish() in order to give the UI
+ * some time to start up.
+ */
+ private void startDelayedFinish() {
+ mHandler.sendEmptyMessageDelayed(EVENT_DELAYED_FINISH, DELAYED_FINISH_TIME);
+ }
+
@Override
public void onPause() {
super.onPause();
@@ -394,7 +419,7 @@
// Woo hoo -- it's finally OK to initiate the outgoing call!
PhoneGlobals.getInstance().callController.placeCall(mIntent);
}
- finish();
+ startDelayedFinish();
}
});
}