Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c7e2569 authored by Hall Liu's avatar Hall Liu
Browse files

Send audio state when foreground call is updated

Whenever the foreground call changes, send the audio state to both the
in-call service and the call's connection service.

Change-Id: I7048aec0f50590da0f94f8bc5cb19043a5f70f76
Fix: 28114043
parent b5f3fb3e
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -173,6 +173,10 @@ public class CallAudioManager extends CallsManagerListenerBase {

    @Override
    public void onIncomingCallAnswered(Call call) {
        if (!mCalls.contains(call)) {
            return;
        }

        // This is called after the UI answers the call, but before the connection service
        // sets the call to active. Only thing to handle for mode here is the audio speedup thing.

@@ -381,6 +385,11 @@ public class CallAudioManager extends CallsManagerListenerBase {
    }

    void dump(IndentingPrintWriter pw) {
        pw.println("All calls:");
        pw.increaseIndent();
        dumpCallsInCollection(pw, mCalls);
        pw.decreaseIndent();

        pw.println("Active dialing, or connecting calls:");
        pw.increaseIndent();
        dumpCallsInCollection(pw, mActiveDialingOrConnectingCalls);
@@ -511,6 +520,8 @@ public class CallAudioManager extends CallsManagerListenerBase {
        }

        if (mForegroundCall != oldForegroundCall) {
            mCallAudioRouteStateMachine.sendMessageWithSessionInfo(
                    CallAudioRouteStateMachine.UPDATE_SYSTEM_AUDIO_ROUTE);
            mDtmfLocalTonePlayer.onForegroundCallChanged(oldForegroundCall, mForegroundCall);
            maybePlayHoldTone();
        }
+14 −1
Original line number Diff line number Diff line
@@ -92,6 +92,8 @@ public class CallAudioRouteStateMachine extends StateMachine {
    public static final int USER_SWITCH_SPEAKER = 1104;
    public static final int USER_SWITCH_BASELINE_ROUTE = 1105;

    public static final int UPDATE_SYSTEM_AUDIO_ROUTE = 1201;

    public static final int MUTE_ON = 3001;
    public static final int MUTE_OFF = 3002;
    public static final int TOGGLE_MUTE = 3003;
@@ -1071,6 +1073,9 @@ public class CallAudioRouteStateMachine extends StateMachine {
                    sendInternalMessage(MUTE_ON);
                }
                return;
            case UPDATE_SYSTEM_AUDIO_ROUTE:
                resendSystemAudioState();
                return;
            case RUN_RUNNABLE:
                java.lang.Runnable r = (java.lang.Runnable) msg.obj;
                r.run();
@@ -1151,12 +1156,20 @@ public class CallAudioRouteStateMachine extends StateMachine {
    }

    private void setSystemAudioState(CallAudioState newCallAudioState) {
        setSystemAudioState(newCallAudioState, false);
    }

    private void resendSystemAudioState() {
        setSystemAudioState(mLastKnownCallAudioState, true);
    }

    private void setSystemAudioState(CallAudioState newCallAudioState, boolean force) {
        Log.i(this, "setSystemAudioState: changing from %s to %s", mLastKnownCallAudioState,
                newCallAudioState);
        Log.event(mCallsManager.getForegroundCall(), Log.Events.AUDIO_ROUTE,
                CallAudioState.audioRouteToString(newCallAudioState.getRoute()));

        if (!newCallAudioState.equals(mLastKnownCallAudioState)) {
        if (force || !newCallAudioState.equals(mLastKnownCallAudioState)) {
            mCallsManager.onCallAudioStateChanged(mLastKnownCallAudioState, newCallAudioState);
            updateAudioForForegroundCall(newCallAudioState);
            mLastKnownCallAudioState = newCallAudioState;