Loading src/com/android/server/telecom/BluetoothPhoneServiceImpl.java +3 −1 Original line number Diff line number Diff line Loading @@ -344,7 +344,8 @@ public class BluetoothPhoneServiceImpl { // state. We can assume that the active call will be automatically held which will // send another update at which point we will be in the right state. if (mCallsManager.getActiveCall() != null && oldState == CallState.CONNECTING && newState == CallState.DIALING) { && oldState == CallState.CONNECTING && (newState == CallState.DIALING || newState == CallState.PULLING)) { return; } updateHeadsetWithCallState(false /* force */); Loading Loading @@ -821,6 +822,7 @@ public class BluetoothPhoneServiceImpl { case CallState.CONNECTING: case CallState.SELECT_PHONE_ACCOUNT: case CallState.DIALING: case CallState.PULLING: // Yes, this is correctly returning ALERTING. // "Dialing" for BT means that we have sent information to the service provider // to place the call but there is no confirmation that the call is going through. Loading src/com/android/server/telecom/Call.java +5 −0 Original line number Diff line number Diff line Loading @@ -677,6 +677,9 @@ public class Call implements CreateConnectionResponse { case CallState.DIALING: event = Log.Events.SET_DIALING; break; case CallState.PULLING: event = Log.Events.SET_PULLING; break; case CallState.DISCONNECTED: event = Log.Events.SET_DISCONNECTED; data = getDisconnectCause(); Loading Loading @@ -2001,6 +2004,8 @@ public class Call implements CreateConnectionResponse { return CallState.ACTIVE; case Connection.STATE_DIALING: return CallState.DIALING; case Connection.STATE_PULLING_CALL: return CallState.PULLING; case Connection.STATE_DISCONNECTED: return CallState.DISCONNECTED; case Connection.STATE_HOLDING: Loading src/com/android/server/telecom/CallAudioManager.java +8 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ public class CallAudioManager extends CallsManagerListenerBase { put(CallState.CONNECTING, mActiveDialingOrConnectingCalls); put(CallState.ACTIVE, mActiveDialingOrConnectingCalls); put(CallState.DIALING, mActiveDialingOrConnectingCalls); put(CallState.PULLING, mActiveDialingOrConnectingCalls); put(CallState.RINGING, mRingingCalls); put(CallState.ON_HOLD, mHoldingCalls); }}; Loading Loading @@ -489,9 +490,13 @@ public class CallAudioManager extends CallsManagerListenerBase { case CallState.ON_HOLD: onCallLeavingHold(); break; case CallState.PULLING: onCallLeavingActiveDialingOrConnecting(); break; case CallState.DIALING: stopRingbackForCall(call); onCallLeavingActiveDialingOrConnecting(); break; } } Loading @@ -507,6 +512,9 @@ public class CallAudioManager extends CallsManagerListenerBase { case CallState.ON_HOLD: onCallEnteringHold(); break; case CallState.PULLING: onCallEnteringActiveDialingOrConnecting(); break; case CallState.DIALING: onCallEnteringActiveDialingOrConnecting(); playRingbackForCall(call); Loading src/com/android/server/telecom/CallState.java +11 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,15 @@ public final class CallState { */ public static final int DISCONNECTING = 9; /** * Indicates that the call is in the process of being pulled to the local device. * <p> * This state should only be set on a call with * {@link android.telecom.Connection#PROPERTY_IS_EXTERNAL_CALL} and * {@link android.telecom.Connection#CAPABILITY_CAN_PULL_CALL}. */ public static final int PULLING = 10; public static String toString(int callState) { switch (callState) { case NEW: Loading @@ -125,6 +134,8 @@ public final class CallState { return "ABORTED"; case DISCONNECTING: return "DISCONNECTING"; case PULLING: return "PULLING"; default: return "UNKNOWN"; } Loading src/com/android/server/telecom/CallsManager.java +17 −5 Original line number Diff line number Diff line Loading @@ -119,11 +119,13 @@ public class CallsManager extends Call.ListenerBase private static final int MAXIMUM_TOP_LEVEL_CALLS = 2; private static final int[] OUTGOING_CALL_STATES = {CallState.CONNECTING, CallState.SELECT_PHONE_ACCOUNT, CallState.DIALING}; {CallState.CONNECTING, CallState.SELECT_PHONE_ACCOUNT, CallState.DIALING, CallState.PULLING}; private static final int[] LIVE_CALL_STATES = {CallState.CONNECTING, CallState.SELECT_PHONE_ACCOUNT, CallState.DIALING, CallState.ACTIVE}; CallState.PULLING, CallState.ACTIVE}; public static final String TELECOM_CALL_ID_PREFIX = "TC@"; // Maps call technologies in PhoneConstants to those in Analytics. Loading Loading @@ -996,7 +998,8 @@ public class CallsManager extends Call.ListenerBase // STATE_DIALING, put it on hold before answering the call. if (foregroundCall != null && foregroundCall != call && (foregroundCall.isActive() || foregroundCall.getState() == CallState.DIALING)) { foregroundCall.getState() == CallState.DIALING || foregroundCall.getState() == CallState.PULLING)) { if (0 == (foregroundCall.getConnectionCapabilities() & Connection.CAPABILITY_HOLD)) { // This call does not support hold. If it is from a different connection Loading Loading @@ -1357,6 +1360,11 @@ public class CallsManager extends Call.ListenerBase maybeMoveToSpeakerPhone(call); } void markCallAsPulling(Call call) { setCallState(call, CallState.PULLING, "pulling set explicitly"); maybeMoveToSpeakerPhone(call); } void markCallAsActive(Call call) { setCallState(call, CallState.ACTIVE, "active set explicitly"); maybeMoveToSpeakerPhone(call); Loading Loading @@ -1450,7 +1458,8 @@ public class CallsManager extends Call.ListenerBase } else if (HeadsetMediaButton.LONG_PRESS == type) { Log.d(this, "handleHeadsetHook: longpress -> hangup"); Call callToHangup = getFirstCallWithState( CallState.RINGING, CallState.DIALING, CallState.ACTIVE, CallState.ON_HOLD); CallState.RINGING, CallState.DIALING, CallState.PULLING, CallState.ACTIVE, CallState.ON_HOLD); if (callToHangup != null) { callToHangup.disconnect(); return true; Loading Loading @@ -1480,6 +1489,9 @@ public class CallsManager extends Call.ListenerBase if (call.isEmergencyCall()) { // We never support add call if one of the calls is an emergency call. return false; } else if (call.isExternalCall()) { // External calls don't count. continue; } else if (call.getParentCall() == null) { count++; } Loading Loading @@ -1850,7 +1862,7 @@ public class CallsManager extends Call.ListenerBase } private boolean hasMaximumDialingCalls() { return MAXIMUM_DIALING_CALLS <= getNumCallsWithState(CallState.DIALING); return MAXIMUM_DIALING_CALLS <= getNumCallsWithState(CallState.DIALING, CallState.PULLING); } private boolean makeRoomForOutgoingCall(Call call, boolean isEmergency) { Loading Loading
src/com/android/server/telecom/BluetoothPhoneServiceImpl.java +3 −1 Original line number Diff line number Diff line Loading @@ -344,7 +344,8 @@ public class BluetoothPhoneServiceImpl { // state. We can assume that the active call will be automatically held which will // send another update at which point we will be in the right state. if (mCallsManager.getActiveCall() != null && oldState == CallState.CONNECTING && newState == CallState.DIALING) { && oldState == CallState.CONNECTING && (newState == CallState.DIALING || newState == CallState.PULLING)) { return; } updateHeadsetWithCallState(false /* force */); Loading Loading @@ -821,6 +822,7 @@ public class BluetoothPhoneServiceImpl { case CallState.CONNECTING: case CallState.SELECT_PHONE_ACCOUNT: case CallState.DIALING: case CallState.PULLING: // Yes, this is correctly returning ALERTING. // "Dialing" for BT means that we have sent information to the service provider // to place the call but there is no confirmation that the call is going through. Loading
src/com/android/server/telecom/Call.java +5 −0 Original line number Diff line number Diff line Loading @@ -677,6 +677,9 @@ public class Call implements CreateConnectionResponse { case CallState.DIALING: event = Log.Events.SET_DIALING; break; case CallState.PULLING: event = Log.Events.SET_PULLING; break; case CallState.DISCONNECTED: event = Log.Events.SET_DISCONNECTED; data = getDisconnectCause(); Loading Loading @@ -2001,6 +2004,8 @@ public class Call implements CreateConnectionResponse { return CallState.ACTIVE; case Connection.STATE_DIALING: return CallState.DIALING; case Connection.STATE_PULLING_CALL: return CallState.PULLING; case Connection.STATE_DISCONNECTED: return CallState.DISCONNECTED; case Connection.STATE_HOLDING: Loading
src/com/android/server/telecom/CallAudioManager.java +8 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ public class CallAudioManager extends CallsManagerListenerBase { put(CallState.CONNECTING, mActiveDialingOrConnectingCalls); put(CallState.ACTIVE, mActiveDialingOrConnectingCalls); put(CallState.DIALING, mActiveDialingOrConnectingCalls); put(CallState.PULLING, mActiveDialingOrConnectingCalls); put(CallState.RINGING, mRingingCalls); put(CallState.ON_HOLD, mHoldingCalls); }}; Loading Loading @@ -489,9 +490,13 @@ public class CallAudioManager extends CallsManagerListenerBase { case CallState.ON_HOLD: onCallLeavingHold(); break; case CallState.PULLING: onCallLeavingActiveDialingOrConnecting(); break; case CallState.DIALING: stopRingbackForCall(call); onCallLeavingActiveDialingOrConnecting(); break; } } Loading @@ -507,6 +512,9 @@ public class CallAudioManager extends CallsManagerListenerBase { case CallState.ON_HOLD: onCallEnteringHold(); break; case CallState.PULLING: onCallEnteringActiveDialingOrConnecting(); break; case CallState.DIALING: onCallEnteringActiveDialingOrConnecting(); playRingbackForCall(call); Loading
src/com/android/server/telecom/CallState.java +11 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,15 @@ public final class CallState { */ public static final int DISCONNECTING = 9; /** * Indicates that the call is in the process of being pulled to the local device. * <p> * This state should only be set on a call with * {@link android.telecom.Connection#PROPERTY_IS_EXTERNAL_CALL} and * {@link android.telecom.Connection#CAPABILITY_CAN_PULL_CALL}. */ public static final int PULLING = 10; public static String toString(int callState) { switch (callState) { case NEW: Loading @@ -125,6 +134,8 @@ public final class CallState { return "ABORTED"; case DISCONNECTING: return "DISCONNECTING"; case PULLING: return "PULLING"; default: return "UNKNOWN"; } Loading
src/com/android/server/telecom/CallsManager.java +17 −5 Original line number Diff line number Diff line Loading @@ -119,11 +119,13 @@ public class CallsManager extends Call.ListenerBase private static final int MAXIMUM_TOP_LEVEL_CALLS = 2; private static final int[] OUTGOING_CALL_STATES = {CallState.CONNECTING, CallState.SELECT_PHONE_ACCOUNT, CallState.DIALING}; {CallState.CONNECTING, CallState.SELECT_PHONE_ACCOUNT, CallState.DIALING, CallState.PULLING}; private static final int[] LIVE_CALL_STATES = {CallState.CONNECTING, CallState.SELECT_PHONE_ACCOUNT, CallState.DIALING, CallState.ACTIVE}; CallState.PULLING, CallState.ACTIVE}; public static final String TELECOM_CALL_ID_PREFIX = "TC@"; // Maps call technologies in PhoneConstants to those in Analytics. Loading Loading @@ -996,7 +998,8 @@ public class CallsManager extends Call.ListenerBase // STATE_DIALING, put it on hold before answering the call. if (foregroundCall != null && foregroundCall != call && (foregroundCall.isActive() || foregroundCall.getState() == CallState.DIALING)) { foregroundCall.getState() == CallState.DIALING || foregroundCall.getState() == CallState.PULLING)) { if (0 == (foregroundCall.getConnectionCapabilities() & Connection.CAPABILITY_HOLD)) { // This call does not support hold. If it is from a different connection Loading Loading @@ -1357,6 +1360,11 @@ public class CallsManager extends Call.ListenerBase maybeMoveToSpeakerPhone(call); } void markCallAsPulling(Call call) { setCallState(call, CallState.PULLING, "pulling set explicitly"); maybeMoveToSpeakerPhone(call); } void markCallAsActive(Call call) { setCallState(call, CallState.ACTIVE, "active set explicitly"); maybeMoveToSpeakerPhone(call); Loading Loading @@ -1450,7 +1458,8 @@ public class CallsManager extends Call.ListenerBase } else if (HeadsetMediaButton.LONG_PRESS == type) { Log.d(this, "handleHeadsetHook: longpress -> hangup"); Call callToHangup = getFirstCallWithState( CallState.RINGING, CallState.DIALING, CallState.ACTIVE, CallState.ON_HOLD); CallState.RINGING, CallState.DIALING, CallState.PULLING, CallState.ACTIVE, CallState.ON_HOLD); if (callToHangup != null) { callToHangup.disconnect(); return true; Loading Loading @@ -1480,6 +1489,9 @@ public class CallsManager extends Call.ListenerBase if (call.isEmergencyCall()) { // We never support add call if one of the calls is an emergency call. return false; } else if (call.isExternalCall()) { // External calls don't count. continue; } else if (call.getParentCall() == null) { count++; } Loading Loading @@ -1850,7 +1862,7 @@ public class CallsManager extends Call.ListenerBase } private boolean hasMaximumDialingCalls() { return MAXIMUM_DIALING_CALLS <= getNumCallsWithState(CallState.DIALING); return MAXIMUM_DIALING_CALLS <= getNumCallsWithState(CallState.DIALING, CallState.PULLING); } private boolean makeRoomForOutgoingCall(Call call, boolean isEmergency) { Loading