Loading android/app/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -101,6 +101,7 @@ cc_library_shared { "lib-bt-packets-avrcp", "lib-bt-packets-base", "libFraunhoferAAC", "libaconfig_storage_read_api_cc", "libaudio-a2dp-hw-utils", "libbase", "libbluetooth", Loading Loading @@ -164,6 +165,7 @@ cc_library_shared { "com.android.btservices", ], min_sdk_version: "Tiramisu", ldflags: ["-Wl,--allow-multiple-definition"], } cc_library { Loading android/app/src/com/android/bluetooth/hfp/HeadsetService.java +1 −1 Original line number Diff line number Diff line Loading @@ -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); Loading android/app/src/com/android/bluetooth/hfp/HeadsetStateMachine.java +5 −0 Original line number Diff line number Diff line Loading @@ -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); Loading android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetStateMachineTest.java +21 −0 Original line number Diff line number Diff line Loading @@ -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 Loading android/pandora/server/configs/PtsBotTest.xml +6 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer"> <option name="run-command" value="setprop persist.bluetooth.btsnooplogmode full" /> <option name="run-command" value="setprop log.tag.bluetooth VERBOSE" /> <option name="run-command" value="setprop persist.bluetooth.btsnoopsize 0xfffffffffffffff" /> </target_preparer> <target_preparer class="com.android.tradefed.targetprep.PythonVirtualenvPreparer"> Loading @@ -41,6 +41,11 @@ <!-- <option name="dep-module" value="scipy" /> --> </target_preparer> <target_preparer class="com.android.tradefed.targetprep.DeviceSetup"> <option name="set-property" key="persist.log.tag.bluetooth" value="VERBOSE"/> <option name="restore-properties" value="true"/> </target_preparer> <test class="com.android.tradefed.testtype.pandora.PtsBotTest" > <!-- Creates a randomized temp dir for pts-bot binaries and avoid conflicts when running multiple pts-bot on the same machine --> Loading Loading
android/app/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -101,6 +101,7 @@ cc_library_shared { "lib-bt-packets-avrcp", "lib-bt-packets-base", "libFraunhoferAAC", "libaconfig_storage_read_api_cc", "libaudio-a2dp-hw-utils", "libbase", "libbluetooth", Loading Loading @@ -164,6 +165,7 @@ cc_library_shared { "com.android.btservices", ], min_sdk_version: "Tiramisu", ldflags: ["-Wl,--allow-multiple-definition"], } cc_library { Loading
android/app/src/com/android/bluetooth/hfp/HeadsetService.java +1 −1 Original line number Diff line number Diff line Loading @@ -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); Loading
android/app/src/com/android/bluetooth/hfp/HeadsetStateMachine.java +5 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetStateMachineTest.java +21 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
android/pandora/server/configs/PtsBotTest.xml +6 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer"> <option name="run-command" value="setprop persist.bluetooth.btsnooplogmode full" /> <option name="run-command" value="setprop log.tag.bluetooth VERBOSE" /> <option name="run-command" value="setprop persist.bluetooth.btsnoopsize 0xfffffffffffffff" /> </target_preparer> <target_preparer class="com.android.tradefed.targetprep.PythonVirtualenvPreparer"> Loading @@ -41,6 +41,11 @@ <!-- <option name="dep-module" value="scipy" /> --> </target_preparer> <target_preparer class="com.android.tradefed.targetprep.DeviceSetup"> <option name="set-property" key="persist.log.tag.bluetooth" value="VERBOSE"/> <option name="restore-properties" value="true"/> </target_preparer> <test class="com.android.tradefed.testtype.pandora.PtsBotTest" > <!-- Creates a randomized temp dir for pts-bot binaries and avoid conflicts when running multiple pts-bot on the same machine --> Loading