Reduce latency for InCallUI by adding an intermediate state
Immediately add a call to Telecomm before the outgoing call broadcast
intent returns, this will reduce the latency for the InCallUI by
allowing the InCallActivity to start before Telecomm has responded.
Bug: 16396523
Change-Id: I4edd533083d3d7edb7a14d179c174223374a4282
diff --git a/src/com/android/telecomm/CallActivity.java b/src/com/android/telecomm/CallActivity.java
index 607d994..0e231b0 100644
--- a/src/com/android/telecomm/CallActivity.java
+++ b/src/com/android/telecomm/CallActivity.java
@@ -21,10 +21,12 @@
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
+import android.net.Uri;
import android.os.Bundle;
import android.telecomm.PhoneAccountHandle;
import android.telecomm.TelecommManager;
import android.telecomm.TelecommManager;
+import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
/**
@@ -105,8 +107,17 @@
* @param intent Call intent containing data about the handle to call.
*/
private void processOutgoingCallIntent(Intent intent) {
+ String uriString = intent.getData().getSchemeSpecificPart();
+ Uri handle = Uri.fromParts(
+ PhoneNumberUtils.isUriNumber(uriString) ? "sip" : "tel", uriString, null);
+ PhoneAccountHandle phoneAccountHandle = intent.getParcelableExtra(
+ TelecommManager.EXTRA_PHONE_ACCOUNT_HANDLE);
+
+ // Send to CallsManager to ensure the InCallUI gets kicked off before the broadcast returns
+ Call call = mCallsManager.startOutgoingCall(handle, phoneAccountHandle);
+
NewOutgoingCallIntentBroadcaster broadcaster = new NewOutgoingCallIntentBroadcaster(
- mCallsManager, intent, isDefaultDialer());
+ mCallsManager, call, intent, isDefaultDialer());
final boolean success = broadcaster.processIntent();
setResult(success ? RESULT_OK : RESULT_CANCELED);
}