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

Commit b2bce9f9 authored by Yuyang Huang's avatar Yuyang Huang Committed by Automerger Merge Worker
Browse files

when ScoManagedByAudioEnabled, Bluetooth don't suspend a2dp or LE Audio am: aa4a4694

parents df3f1e31 aa4a4694
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2384,7 +2384,7 @@ public class HeadsetService extends ProfileService {
                }

                // Unsuspend A2DP when SCO connection is gone and call state is idle
                if (mSystemInterface.isCallIdle()) {
                if (mSystemInterface.isCallIdle() && !Utils.isScoManagedByAudioEnabled()) {
                    mSystemInterface.getAudioManager().setA2dpSuspended(false);
                    if (isAtLeastU()) {
                        mSystemInterface.getAudioManager().setLeAudioSuspended(false);
+5 −0
Original line number Diff line number Diff line
@@ -1306,6 +1306,11 @@ class HeadsetStateMachine extends StateMachine {
                    break;
                case CONNECT_AUDIO:
                    stateLogD("CONNECT_AUDIO, device=" + mDevice);
                    if (Utils.isScoManagedByAudioEnabled()) {
                        stateLogD("ScoManagedByAudioEnabled, BT does not CONNECT_AUDIO");
                        transitionTo(mAudioConnecting);
                        break;
                    }
                    mSystemInterface.getAudioManager().setA2dpSuspended(true);
                    if (isAtLeastU()) {
                        mSystemInterface.getAudioManager().setLeAudioSuspended(true);
+21 −0
Original line number Diff line number Diff line
@@ -593,6 +593,27 @@ public class HeadsetStateMachineTest {
                IsInstanceOf.instanceOf(HeadsetStateMachine.AudioConnecting.class));
    }

    /**
     * Test state transition from Connected to AudioConnecting state via CONNECT_AUDIO message when
     * ScoManagedByAudioEnabled
     */
    @Test
    public void testStateTransition_ConnectedToAudioConnecting_ConnectAudio_ScoManagedbyAudio() {
        mSetFlagsRule.enableFlags(Flags.FLAG_IS_SCO_MANAGED_BY_AUDIO);
        Utils.setIsScoManagedByAudioEnabled(true);

        setUpConnectedState();
        // Send CONNECT_AUDIO message
        mHeadsetStateMachine.sendMessage(HeadsetStateMachine.CONNECT_AUDIO, mTestDevice);
        // verify no native connect audio
        verify(mNativeInterface, never()).connectAudio(mTestDevice);
        TestUtils.waitForLooperToFinishScheduledTask(mHandlerThread.getLooper());
        Assert.assertThat(
                mHeadsetStateMachine.getCurrentState(),
                IsInstanceOf.instanceOf(HeadsetStateMachine.AudioConnecting.class));
        Utils.setIsScoManagedByAudioEnabled(false);
    }

    /**
     * Test state transition from Connected to AudioConnecting state via StackEvent.AUDIO_CONNECTING
     * message