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/NewOutgoingCallIntentBroadcaster.java b/src/com/android/telecomm/NewOutgoingCallIntentBroadcaster.java
index 410cbfd..71d8a96 100644
--- a/src/com/android/telecomm/NewOutgoingCallIntentBroadcaster.java
+++ b/src/com/android/telecomm/NewOutgoingCallIntentBroadcaster.java
@@ -69,6 +69,7 @@
private static final String SCHEME_SIP = "sip";
private final CallsManager mCallsManager;
+ private final Call mCall;
private final Intent mIntent;
/*
* Whether or not the outgoing call intent originated from the default phone application. If
@@ -76,9 +77,10 @@
*/
private final boolean mIsDefaultOrSystemPhoneApp;
- NewOutgoingCallIntentBroadcaster(CallsManager callsManager, Intent intent,
+ NewOutgoingCallIntentBroadcaster(CallsManager callsManager, Call call, Intent intent,
boolean isDefaultPhoneApp) {
mCallsManager = callsManager;
+ mCall = call;
mIntent = intent;
mIsDefaultOrSystemPhoneApp = isDefaultPhoneApp;
}
@@ -124,7 +126,7 @@
GatewayInfo gatewayInfo = getGateWayInfoFromIntent(intent, resultHandleUri);
PhoneAccountHandle accountHandle = getAccountHandleFromIntent(intent);
- mCallsManager.placeOutgoingCall(resultHandleUri, gatewayInfo, accountHandle,
+ mCallsManager.placeOutgoingCall(mCall, resultHandleUri, gatewayInfo, accountHandle,
mIntent.getBooleanExtra(TelecommManager.EXTRA_START_CALL_WITH_SPEAKERPHONE,
false),
mIntent.getIntExtra(TelecommManager.EXTRA_START_CALL_WITH_VIDEO_STATE,
@@ -205,8 +207,8 @@
int videoState = mIntent.getIntExtra(
TelecommManager.EXTRA_START_CALL_WITH_VIDEO_STATE,
VideoCallProfile.VideoState.AUDIO_ONLY);
- mCallsManager.placeOutgoingCall(
- Uri.fromParts(scheme, handle, null), null, null, speakerphoneOn, videoState);
+ mCallsManager.placeOutgoingCall(mCall, Uri.fromParts(scheme, handle, null), null, null,
+ speakerphoneOn, videoState);
// Don't return but instead continue and send the ACTION_NEW_OUTGOING_CALL broadcast
// so that third parties can still inspect (but not intercept) the outgoing call. When