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

Commit 54f663ac authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Have Telecom service notify AudioService of RTT call state." into rvc-dev

parents 78c519a8 4d0c52ea
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -392,6 +392,8 @@ public class CallsManager extends Call.ListenerBase

    private LinkedList<HandlerThread> mGraphHandlerThreads;

    private boolean mHasActiveRttCall = false;

    /**
     * Listener to PhoneAccountRegistrar events.
     */
@@ -897,6 +899,13 @@ public class CallsManager extends Call.ListenerBase
        }
    }

    @Override
    public void onConnectionPropertiesChanged(Call call, boolean didRttChange) {
        if (didRttChange) {
            updateHasActiveRttCall();
        }
    }

    @Override
    public void onParentChanged(Call call) {
        // parent-child relationship affects which call should be foreground, so do an update.
@@ -3423,6 +3432,7 @@ public class CallsManager extends Call.ListenerBase
                SystemClock.elapsedRealtime());

        updateCanAddCall();
        updateHasActiveRttCall();
        // onCallAdded for calls which immediately take the foreground (like the first call).
        for (CallsManagerListener listener : mListeners) {
            if (LogUtils.SYSTRACE_DEBUG) {
@@ -3456,6 +3466,7 @@ public class CallsManager extends Call.ListenerBase
        // Only broadcast changes for calls that are being tracked.
        if (shouldNotify) {
            updateCanAddCall();
            updateHasActiveRttCall();
            for (CallsManagerListener listener : mListeners) {
                if (LogUtils.SYSTRACE_DEBUG) {
                    Trace.beginSection(listener.getClass().toString() + " onCallRemoved");
@@ -3469,6 +3480,24 @@ public class CallsManager extends Call.ListenerBase
        Trace.endSection();
    }

    private void updateHasActiveRttCall() {
        boolean hasActiveRttCall = hasActiveRttCall();
        if (hasActiveRttCall != mHasActiveRttCall) {
            Log.i(this, "updateHasActiveRttCall %s -> %s", mHasActiveRttCall, hasActiveRttCall);
            AudioManager.setRttEnabled(hasActiveRttCall);
            mHasActiveRttCall = hasActiveRttCall;
        }
    }

    private boolean hasActiveRttCall() {
        for (Call call : mCalls) {
            if (call.isActive() && call.isRttCall()) {
                return true;
            }
        }
        return false;
    }

    /**
     * Sets the specified state on the specified call.
     *
@@ -3510,6 +3539,7 @@ public class CallsManager extends Call.ListenerBase
                // Only broadcast state change for calls that are being tracked.
                if (mCalls.contains(call)) {
                    updateCanAddCall();
                    updateHasActiveRttCall();
                    for (CallsManagerListener listener : mListeners) {
                        if (LogUtils.SYSTRACE_DEBUG) {
                            Trace.beginSection(listener.getClass().toString() +