Loading src/com/android/server/telecom/CallAudioManager.java +29 −14 Original line number Diff line number Diff line Loading @@ -97,8 +97,8 @@ public class CallAudioManager extends CallsManagerListenerBase { Log.d(LOG_TAG, "Call state changed for TC@%s: %s -> %s", call.getId(), CallState.toString(oldState), CallState.toString(newState)); if (mCallStateToCalls.get(oldState) != null) { mCallStateToCalls.get(oldState).remove(call); for (int i = 0; i < mCallStateToCalls.size(); i++) { mCallStateToCalls.valueAt(i).remove(call); } if (mCallStateToCalls.get(newState) != null) { mCallStateToCalls.get(newState).add(call); Loading Loading @@ -157,8 +157,8 @@ public class CallAudioManager extends CallsManagerListenerBase { Log.d(LOG_TAG, "Call removed with id TC@%s in state %s", call.getId(), CallState.toString(call.getState())); if (mCallStateToCalls.get(call.getState()) != null) { mCallStateToCalls.get(call.getState()).remove(call); for (int i = 0; i < mCallStateToCalls.size(); i++) { mCallStateToCalls.valueAt(i).remove(call); } updateForegroundCall(); Loading Loading @@ -216,7 +216,7 @@ public class CallAudioManager extends CallsManagerListenerBase { mCallStateToCalls.get(call.getState()).remove(call); } mActiveDialingOrConnectingCalls.add(call); mCallAudioModeStateMachine.sendMessage( mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.MT_AUDIO_SPEEDUP_FOR_RINGING_CALL, makeArgsForModeStateMachine()); } Loading Loading @@ -267,7 +267,7 @@ public class CallAudioManager extends CallsManagerListenerBase { if (call != mForegroundCall) { return; } mCallAudioModeStateMachine.sendMessage( mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.FOREGROUND_VOIP_MODE_CHANGE, makeArgsForModeStateMachine()); } Loading Loading @@ -388,7 +388,8 @@ public class CallAudioManager extends CallsManagerListenerBase { mRingingCalls.clear(); mRinger.stopRinging(); mRinger.stopCallWaiting(); mCallAudioModeStateMachine.sendMessage(CallAudioModeStateMachine.NO_MORE_RINGING_CALLS, mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.NO_MORE_RINGING_CALLS, makeArgsForModeStateMachine()); } Loading Loading @@ -451,7 +452,7 @@ public class CallAudioManager extends CallsManagerListenerBase { @VisibleForTesting public void setIsTonePlaying(boolean isTonePlaying) { mIsTonePlaying = isTonePlaying; mCallAudioModeStateMachine.sendMessage( mCallAudioModeStateMachine.sendMessageWithArgs( isTonePlaying ? CallAudioModeStateMachine.TONE_STARTED_PLAYING : CallAudioModeStateMachine.TONE_STOPPED_PLAYING, makeArgsForModeStateMachine()); Loading Loading @@ -496,7 +497,7 @@ public class CallAudioManager extends CallsManagerListenerBase { private void onCallLeavingActiveDialingOrConnecting() { if (mActiveDialingOrConnectingCalls.size() == 0) { mCallAudioModeStateMachine.sendMessage( mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.NO_MORE_ACTIVE_OR_DIALING_CALLS, makeArgsForModeStateMachine()); } Loading @@ -504,21 +505,23 @@ public class CallAudioManager extends CallsManagerListenerBase { private void onCallLeavingRinging() { if (mRingingCalls.size() == 0) { mCallAudioModeStateMachine.sendMessage(CallAudioModeStateMachine.NO_MORE_RINGING_CALLS, mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.NO_MORE_RINGING_CALLS, makeArgsForModeStateMachine()); } } private void onCallLeavingHold() { if (mHoldingCalls.size() == 0) { mCallAudioModeStateMachine.sendMessage(CallAudioModeStateMachine.NO_MORE_HOLDING_CALLS, mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.NO_MORE_HOLDING_CALLS, makeArgsForModeStateMachine()); } } private void onCallEnteringActiveDialingOrConnecting() { if (mActiveDialingOrConnectingCalls.size() == 1) { mCallAudioModeStateMachine.sendMessage( mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.NEW_ACTIVE_OR_DIALING_CALL, makeArgsForModeStateMachine()); } Loading @@ -526,14 +529,16 @@ public class CallAudioManager extends CallsManagerListenerBase { private void onCallEnteringRinging() { if (mRingingCalls.size() == 1) { mCallAudioModeStateMachine.sendMessage(CallAudioModeStateMachine.NEW_RINGING_CALL, mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.NEW_RINGING_CALL, makeArgsForModeStateMachine()); } } private void onCallEnteringHold() { if (mHoldingCalls.size() == 1) { mCallAudioModeStateMachine.sendMessage(CallAudioModeStateMachine.NEW_HOLDING_CALL, mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.NEW_HOLDING_CALL, makeArgsForModeStateMachine()); } } Loading Loading @@ -691,4 +696,14 @@ public class CallAudioManager extends CallsManagerListenerBase { mRinger.stopCallWaiting(); } } @VisibleForTesting public Set<Call> getTrackedCalls() { return mCalls; } @VisibleForTesting public SparseArray<LinkedHashSet<Call>> getCallStateToCalls() { return mCallStateToCalls; } } No newline at end of file src/com/android/server/telecom/CallAudioModeStateMachine.java +11 −0 Original line number Diff line number Diff line Loading @@ -308,6 +308,13 @@ public class CallAudioModeStateMachine extends StateMachine { if (args.isTonePlaying) { mCallAudioManager.stopCallWaiting(); } // If a MT-audio-speedup call gets disconnected by the connection service // concurrently with the user answering it, we may get this message // indicating that a ringing call has disconnected while this state machine // is in the SimCallFocusState. if (!args.hasActiveOrDialingCalls) { transitionTo(destinationStateAfterNoMoreActiveCalls(args)); } return HANDLED; case NO_MORE_HOLDING_CALLS: // Do nothing. Loading Loading @@ -483,6 +490,10 @@ public class CallAudioModeStateMachine extends StateMachine { return currentState == null ? "no state" : currentState.getName(); } public void sendMessageWithArgs(int messageCode, MessageArgs args) { sendMessage(messageCode, args); } @Override protected void onPreHandleMessage(Message msg) { if (msg.obj != null && msg.obj instanceof MessageArgs) { Loading src/com/android/server/telecom/DtmfLocalTonePlayer.java +1 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ import com.android.internal.util.Preconditions; * class employs a concept of a call "session" that starts and stops when the foreground call * changes. */ class DtmfLocalTonePlayer { public class DtmfLocalTonePlayer { /** Generator used to actually play the tone. */ private ToneGenerator mToneGenerator; Loading src/com/android/server/telecom/RingbackPlayer.java +1 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ import com.android.internal.util.Preconditions; * able to turn off and on as the user switches between calls. This is why it is implemented as its * own class. */ class RingbackPlayer { public class RingbackPlayer { private final InCallTonePlayer.Factory mPlayerFactory; Loading src/com/android/server/telecom/Ringer.java +1 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ import com.android.internal.annotations.VisibleForTesting; * Controls the ringtone player. */ @VisibleForTesting public final class Ringer { public class Ringer { private static final long[] VIBRATION_PATTERN = new long[] { 0, // No delay before starting 1000, // How long to vibrate Loading Loading
src/com/android/server/telecom/CallAudioManager.java +29 −14 Original line number Diff line number Diff line Loading @@ -97,8 +97,8 @@ public class CallAudioManager extends CallsManagerListenerBase { Log.d(LOG_TAG, "Call state changed for TC@%s: %s -> %s", call.getId(), CallState.toString(oldState), CallState.toString(newState)); if (mCallStateToCalls.get(oldState) != null) { mCallStateToCalls.get(oldState).remove(call); for (int i = 0; i < mCallStateToCalls.size(); i++) { mCallStateToCalls.valueAt(i).remove(call); } if (mCallStateToCalls.get(newState) != null) { mCallStateToCalls.get(newState).add(call); Loading Loading @@ -157,8 +157,8 @@ public class CallAudioManager extends CallsManagerListenerBase { Log.d(LOG_TAG, "Call removed with id TC@%s in state %s", call.getId(), CallState.toString(call.getState())); if (mCallStateToCalls.get(call.getState()) != null) { mCallStateToCalls.get(call.getState()).remove(call); for (int i = 0; i < mCallStateToCalls.size(); i++) { mCallStateToCalls.valueAt(i).remove(call); } updateForegroundCall(); Loading Loading @@ -216,7 +216,7 @@ public class CallAudioManager extends CallsManagerListenerBase { mCallStateToCalls.get(call.getState()).remove(call); } mActiveDialingOrConnectingCalls.add(call); mCallAudioModeStateMachine.sendMessage( mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.MT_AUDIO_SPEEDUP_FOR_RINGING_CALL, makeArgsForModeStateMachine()); } Loading Loading @@ -267,7 +267,7 @@ public class CallAudioManager extends CallsManagerListenerBase { if (call != mForegroundCall) { return; } mCallAudioModeStateMachine.sendMessage( mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.FOREGROUND_VOIP_MODE_CHANGE, makeArgsForModeStateMachine()); } Loading Loading @@ -388,7 +388,8 @@ public class CallAudioManager extends CallsManagerListenerBase { mRingingCalls.clear(); mRinger.stopRinging(); mRinger.stopCallWaiting(); mCallAudioModeStateMachine.sendMessage(CallAudioModeStateMachine.NO_MORE_RINGING_CALLS, mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.NO_MORE_RINGING_CALLS, makeArgsForModeStateMachine()); } Loading Loading @@ -451,7 +452,7 @@ public class CallAudioManager extends CallsManagerListenerBase { @VisibleForTesting public void setIsTonePlaying(boolean isTonePlaying) { mIsTonePlaying = isTonePlaying; mCallAudioModeStateMachine.sendMessage( mCallAudioModeStateMachine.sendMessageWithArgs( isTonePlaying ? CallAudioModeStateMachine.TONE_STARTED_PLAYING : CallAudioModeStateMachine.TONE_STOPPED_PLAYING, makeArgsForModeStateMachine()); Loading Loading @@ -496,7 +497,7 @@ public class CallAudioManager extends CallsManagerListenerBase { private void onCallLeavingActiveDialingOrConnecting() { if (mActiveDialingOrConnectingCalls.size() == 0) { mCallAudioModeStateMachine.sendMessage( mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.NO_MORE_ACTIVE_OR_DIALING_CALLS, makeArgsForModeStateMachine()); } Loading @@ -504,21 +505,23 @@ public class CallAudioManager extends CallsManagerListenerBase { private void onCallLeavingRinging() { if (mRingingCalls.size() == 0) { mCallAudioModeStateMachine.sendMessage(CallAudioModeStateMachine.NO_MORE_RINGING_CALLS, mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.NO_MORE_RINGING_CALLS, makeArgsForModeStateMachine()); } } private void onCallLeavingHold() { if (mHoldingCalls.size() == 0) { mCallAudioModeStateMachine.sendMessage(CallAudioModeStateMachine.NO_MORE_HOLDING_CALLS, mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.NO_MORE_HOLDING_CALLS, makeArgsForModeStateMachine()); } } private void onCallEnteringActiveDialingOrConnecting() { if (mActiveDialingOrConnectingCalls.size() == 1) { mCallAudioModeStateMachine.sendMessage( mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.NEW_ACTIVE_OR_DIALING_CALL, makeArgsForModeStateMachine()); } Loading @@ -526,14 +529,16 @@ public class CallAudioManager extends CallsManagerListenerBase { private void onCallEnteringRinging() { if (mRingingCalls.size() == 1) { mCallAudioModeStateMachine.sendMessage(CallAudioModeStateMachine.NEW_RINGING_CALL, mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.NEW_RINGING_CALL, makeArgsForModeStateMachine()); } } private void onCallEnteringHold() { if (mHoldingCalls.size() == 1) { mCallAudioModeStateMachine.sendMessage(CallAudioModeStateMachine.NEW_HOLDING_CALL, mCallAudioModeStateMachine.sendMessageWithArgs( CallAudioModeStateMachine.NEW_HOLDING_CALL, makeArgsForModeStateMachine()); } } Loading Loading @@ -691,4 +696,14 @@ public class CallAudioManager extends CallsManagerListenerBase { mRinger.stopCallWaiting(); } } @VisibleForTesting public Set<Call> getTrackedCalls() { return mCalls; } @VisibleForTesting public SparseArray<LinkedHashSet<Call>> getCallStateToCalls() { return mCallStateToCalls; } } No newline at end of file
src/com/android/server/telecom/CallAudioModeStateMachine.java +11 −0 Original line number Diff line number Diff line Loading @@ -308,6 +308,13 @@ public class CallAudioModeStateMachine extends StateMachine { if (args.isTonePlaying) { mCallAudioManager.stopCallWaiting(); } // If a MT-audio-speedup call gets disconnected by the connection service // concurrently with the user answering it, we may get this message // indicating that a ringing call has disconnected while this state machine // is in the SimCallFocusState. if (!args.hasActiveOrDialingCalls) { transitionTo(destinationStateAfterNoMoreActiveCalls(args)); } return HANDLED; case NO_MORE_HOLDING_CALLS: // Do nothing. Loading Loading @@ -483,6 +490,10 @@ public class CallAudioModeStateMachine extends StateMachine { return currentState == null ? "no state" : currentState.getName(); } public void sendMessageWithArgs(int messageCode, MessageArgs args) { sendMessage(messageCode, args); } @Override protected void onPreHandleMessage(Message msg) { if (msg.obj != null && msg.obj instanceof MessageArgs) { Loading
src/com/android/server/telecom/DtmfLocalTonePlayer.java +1 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ import com.android.internal.util.Preconditions; * class employs a concept of a call "session" that starts and stops when the foreground call * changes. */ class DtmfLocalTonePlayer { public class DtmfLocalTonePlayer { /** Generator used to actually play the tone. */ private ToneGenerator mToneGenerator; Loading
src/com/android/server/telecom/RingbackPlayer.java +1 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ import com.android.internal.util.Preconditions; * able to turn off and on as the user switches between calls. This is why it is implemented as its * own class. */ class RingbackPlayer { public class RingbackPlayer { private final InCallTonePlayer.Factory mPlayerFactory; Loading
src/com/android/server/telecom/Ringer.java +1 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ import com.android.internal.annotations.VisibleForTesting; * Controls the ringtone player. */ @VisibleForTesting public final class Ringer { public class Ringer { private static final long[] VIBRATION_PATTERN = new long[] { 0, // No delay before starting 1000, // How long to vibrate Loading