Loading android/app/src/com/android/bluetooth/hfp/HeadsetService.java +13 −27 Original line number Diff line number Diff line Loading @@ -196,7 +196,6 @@ public class HeadsetService extends ProfileService { // Step 3: Initialize system interface mSystemInterface = HeadsetObjectsFactory.getInstance().makeSystemInterface(this); // Step 4: Initialize native interface if (Flags.hfpCodecAptxVoice()) { mIsAptXSwbEnabled = SystemProperties.getBoolean("bluetooth.hfp.codec_aptx_voice.enabled", false); Log.i(TAG, "mIsAptXSwbEnabled: " + mIsAptXSwbEnabled); Loading @@ -204,17 +203,12 @@ public class HeadsetService extends ProfileService { SystemProperties.getBoolean( "bluetooth.hfp.swb.aptx.power_management.enabled", false); Log.i(TAG, "mIsAptXSwbPmEnabled: " + mIsAptXSwbPmEnabled); } setHeadsetService(this); mMaxHeadsetConnections = mAdapterService.getMaxConnectedAudioDevices(); // Add 1 to allow a pending device to be connecting or disconnecting mNativeInterface.init(mMaxHeadsetConnections + 1, isInbandRingingEnabled()); if (Flags.hfpCodecAptxVoice()) { enableSwbCodec( HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX, mIsAptXSwbEnabled, mActiveDevice); } HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX, mIsAptXSwbEnabled, mActiveDevice); // Step 6: Setup broadcast receivers IntentFilter filter = new IntentFilter(); filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); Loading Loading @@ -1185,9 +1179,7 @@ public class HeadsetService extends ProfileService { } stateMachine.sendMessage(HeadsetStateMachine.CONNECT_AUDIO, device); } if (Flags.hfpCodecAptxVoice()) { enableSwbCodec(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX, true, device); } return true; } Loading Loading @@ -1227,9 +1219,7 @@ public class HeadsetService extends ProfileService { } stateMachine.sendMessage(HeadsetStateMachine.DISCONNECT_AUDIO, device); } if (Flags.hfpCodecAptxVoice()) { enableSwbCodec(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX, false, device); } return true; } Loading Loading @@ -1902,9 +1892,7 @@ public class HeadsetService extends ProfileService { if (!mSystemInterface.getVoiceRecognitionWakeLock().isHeld()) { mSystemInterface.getVoiceRecognitionWakeLock().acquire(sStartVrTimeoutMs); } if (Flags.hfpCodecAptxVoice()) { enableSwbCodec(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX, true, fromDevice); } return true; } } Loading Loading @@ -1956,9 +1944,7 @@ public class HeadsetService extends ProfileService { Log.w(TAG, "stopVoiceRecognitionByHeadset: failed request from " + fromDevice); return false; } if (Flags.hfpCodecAptxVoice()) { enableSwbCodec(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX, false, fromDevice); } return true; } } Loading android/app/src/com/android/bluetooth/hfp/HeadsetStateMachine.java +3 −7 Original line number Diff line number Diff line Loading @@ -512,9 +512,6 @@ class HeadsetStateMachine extends StateMachine { abstract int getAudioStateInt(); protected void setAptxVoice(HeadsetCallState callState) { if (!Flags.hfpCodecAptxVoice()) { return; } if (!mHeadsetService.isAptXSwbEnabled()) { return; } Loading Loading @@ -1339,8 +1336,7 @@ class HeadsetStateMachine extends StateMachine { mSystemInterface.getAudioManager().setLeAudioSuspended(true); } if (Flags.hfpCodecAptxVoice() && mHeadsetService.isAptXSwbEnabled() if (mHeadsetService.isAptXSwbEnabled() && mHeadsetService.isAptXSwbPmEnabled()) { if (!mHeadsetService.isVirtualCallStarted() && mSystemInterface.isHighDefCallInProgress()) { Loading Loading @@ -1880,7 +1876,7 @@ class HeadsetStateMachine extends StateMachine { + (" hasSwbEnabled=" + mHasSwbLc3Enabled) + (" hasAptXSwbEnabled=" + mHasSwbAptXEnabled)); am.setParameters("bt_lc3_swb=" + (mHasSwbLc3Enabled ? "on" : "off")); if (Flags.hfpCodecAptxVoice() && mHeadsetService.isAptXSwbEnabled()) { if (mHeadsetService.isAptXSwbEnabled()) { /* AptX bt_swb: 0 -> on, 65535 -> off */ am.setParameters("bt_swb=" + (mHasSwbAptXEnabled ? "0" : "65535")); } Loading Loading @@ -2030,7 +2026,7 @@ class HeadsetStateMachine extends StateMachine { switch (wbsConfig) { case HeadsetHalConstants.BTHF_WBS_YES: mHasWbsEnabled = true; if (Flags.hfpCodecAptxVoice() && mHeadsetService.isAptXSwbEnabled()) { if (mHeadsetService.isAptXSwbEnabled()) { mHasSwbAptXEnabled = false; } break; Loading android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceAndStateMachineTest.java +61 −88 Original line number Diff line number Diff line Loading @@ -187,7 +187,6 @@ public class HeadsetServiceAndStateMachineTest { verify(mNativeInterface).init(MAX_HEADSET_CONNECTIONS + 1, true /* inband ringtone */); // Set up the Connection State Changed receiver if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), Loading @@ -196,7 +195,6 @@ public class HeadsetServiceAndStateMachineTest { "bluetooth.hfp.codec_aptx_voice.enabled", false)), eq(mHeadsetService.getActiveDevice())); } } @After public void tearDown() { Loading Loading @@ -743,13 +741,11 @@ public class HeadsetServiceAndStateMachineTest { verify(mNativeInterface, times(2)) .atResponseCode(device, HeadsetHalConstants.AT_RESPONSE_OK, 0); verify(mNativeInterface).disconnectAudio(device); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(device)); } verifyNoMoreInteractions(mNativeInterface); } Loading Loading @@ -819,13 +815,11 @@ public class HeadsetServiceAndStateMachineTest { mTestLooper.dispatchAll(); verify(mNativeInterface).atResponseCode(device, HeadsetHalConstants.AT_RESPONSE_ERROR, 0); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(device)); } verifyNoMoreInteractions(ignoreStubs(mNativeInterface)); verifyZeroInteractions(mAudioManager); } Loading Loading @@ -904,13 +898,11 @@ public class HeadsetServiceAndStateMachineTest { mTestLooper.dispatchAll(); verify(mNativeInterface).stopVoiceRecognition(device); verify(mNativeInterface).disconnectAudio(device); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(device)); } verifyNoMoreInteractions(mNativeInterface); } Loading Loading @@ -990,13 +982,11 @@ public class HeadsetServiceAndStateMachineTest { verify(mAudioManager).setA2dpSuspended(true); verify(mAudioManager).setLeAudioSuspended(true); verify(mNativeInterface).connectAudio(deviceA); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(deviceA)); } verifyNoMoreInteractions(ignoreStubs(mNativeInterface)); } Loading Loading @@ -1060,13 +1050,11 @@ public class HeadsetServiceAndStateMachineTest { verify(mAudioManager).setA2dpSuspended(true); verify(mAudioManager).setLeAudioSuspended(true); verify(mNativeInterface).connectAudio(deviceA); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(deviceA)); } verifyNoMoreInteractions(ignoreStubs(mNativeInterface)); } Loading Loading @@ -1114,13 +1102,11 @@ public class HeadsetServiceAndStateMachineTest { verify(mNativeInterface).disconnectAudio(deviceB); // This request should still fail verify(mNativeInterface).atResponseCode(deviceA, HeadsetHalConstants.AT_RESPONSE_ERROR, 0); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(deviceB)); } verifyNoMoreInteractions(ignoreStubs(mNativeInterface)); } Loading Loading @@ -1177,13 +1163,11 @@ public class HeadsetServiceAndStateMachineTest { deviceA, BluetoothHeadset.STATE_AUDIO_CONNECTED, BluetoothHeadset.STATE_AUDIO_CONNECTING); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(deviceA)); } verifyNoMoreInteractions(ignoreStubs(mNativeInterface)); } Loading Loading @@ -1301,7 +1285,7 @@ public class HeadsetServiceAndStateMachineTest { BluetoothHeadset.STATE_AUDIO_CONNECTING); // Check that AptX SWB disabled, LC3 SWB disabled verifySetParametersToAudioSystemInvocation(false, false); verifySetParametersToAudioSystemInvocation(false, true, false); verify(mNativeInterface, times(1)).connectAudio(eq(device)); verify(mNativeInterface).sendBsir(eq(device), eq(true)); verify(mNativeInterface, times(2)) Loading Loading @@ -1385,7 +1369,7 @@ public class HeadsetServiceAndStateMachineTest { BluetoothHeadset.STATE_AUDIO_CONNECTING); // Check that AptX SWB enabled, LC3 SWB disabled verifySetParametersToAudioSystemInvocation(false, true); verifySetParametersToAudioSystemInvocation(false, true, true); verify(mNativeInterface, times(1)).connectAudio(eq(device)); verify(mNativeInterface).sendBsir(eq(device), eq(true)); verify(mNativeInterface, times(2)) Loading Loading @@ -1422,7 +1406,7 @@ public class HeadsetServiceAndStateMachineTest { // Start voice recognition startVoiceRecognitionFromHf(device); // Check that proper codecs were set verifySetParametersToAudioSystemInvocation(true, false); verifySetParametersToAudioSystemInvocation(true, true, false); configureHeadsetServiceForAptxVoice(false); } Loading Loading @@ -1453,7 +1437,7 @@ public class HeadsetServiceAndStateMachineTest { // Start voice recognition startVoiceRecognitionFromHf(device); // Check that proper codecs were set verifySetParametersToAudioSystemInvocation(true, false); verifySetParametersToAudioSystemInvocation(true, false, false); } /** Loading Loading @@ -1483,7 +1467,7 @@ public class HeadsetServiceAndStateMachineTest { // Start voice recognition startVoiceRecognitionFromHf(device); // Check that proper codecs were set verifySetParametersToAudioSystemInvocation(false, true); verifySetParametersToAudioSystemInvocation(false, true, true); configureHeadsetServiceForAptxVoice(false); } Loading Loading @@ -1512,7 +1496,7 @@ public class HeadsetServiceAndStateMachineTest { // Start voice recognition startVoiceRecognitionFromHf(device); // Check that proper codecs were set verifySetParametersToAudioSystemInvocation(false, false); verifySetParametersToAudioSystemInvocation(false, true, false); configureHeadsetServiceForAptxVoice(false); } Loading Loading @@ -1541,7 +1525,7 @@ public class HeadsetServiceAndStateMachineTest { // Start voice recognition startVoiceRecognitionFromHf(device); // Check that proper codecs were set verifySetParametersToAudioSystemInvocation(false, false); verifySetParametersToAudioSystemInvocation(false, false, false); } /** Loading Loading @@ -1671,13 +1655,11 @@ public class HeadsetServiceAndStateMachineTest { verify(mAudioManager).setA2dpSuspended(true); verify(mAudioManager).setLeAudioSuspended(true); verify(mNativeInterface).connectAudio(device); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(device)); } verifyAudioStateIntent( device, BluetoothHeadset.STATE_AUDIO_CONNECTING, Loading Loading @@ -1726,13 +1708,11 @@ public class HeadsetServiceAndStateMachineTest { verify(mAudioManager).setA2dpSuspended(true); verify(mAudioManager).setLeAudioSuspended(true); verify(mNativeInterface).connectAudio(device); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(device)); } verifyAudioStateIntent( device, BluetoothHeadset.STATE_AUDIO_CONNECTING, Loading Loading @@ -1935,9 +1915,9 @@ public class HeadsetServiceAndStateMachineTest { } private void verifySetParametersToAudioSystemInvocation( boolean lc3Enabled, boolean aptxEnabled) { boolean lc3Enabled, boolean aptxSupported, boolean aptxEnabled) { verify(mAudioManager).setParameters(lc3Enabled ? "bt_lc3_swb=on" : "bt_lc3_swb=off"); if (Flags.hfpCodecAptxVoice()) { if (aptxSupported) { verify(mAudioManager).setParameters(aptxEnabled ? "bt_swb=0" : "bt_swb=65535"); } } Loading @@ -1958,13 +1938,6 @@ public class HeadsetServiceAndStateMachineTest { } private void configureHeadsetServiceForAptxVoice(boolean enable) { if (enable) { mSetFlagsRule.enableFlags(Flags.FLAG_HFP_CODEC_APTX_VOICE); assertThat(Flags.hfpCodecAptxVoice()).isTrue(); } else { mSetFlagsRule.disableFlags(Flags.FLAG_HFP_CODEC_APTX_VOICE); assertThat(Flags.hfpCodecAptxVoice()).isFalse(); } setAptxVoiceSystemProperties(enable, enable); mHeadsetService.mIsAptXSwbEnabled = enable; assertThat(mHeadsetService.isAptXSwbEnabled()).isEqualTo(enable); Loading android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetStateMachineTest.java +2 −9 Original line number Diff line number Diff line Loading @@ -2105,11 +2105,9 @@ public class HeadsetStateMachineTest { verify(mAudioManager, timeout(ASYNC_CALL_TIMEOUT_MILLIS)) .setParameters(lc3Enabled ? "bt_lc3_swb=on" : "bt_lc3_swb=off"); if (Flags.hfpCodecAptxVoice()) { verify(mAudioManager, timeout(ASYNC_CALL_TIMEOUT_MILLIS)) .setParameters(aptxEnabled ? "bt_swb=0" : "bt_swb=65535"); } } /** * set sink audio policy Loading Loading @@ -2296,11 +2294,6 @@ public class HeadsetStateMachineTest { private void configureHeadsetServiceForAptxVoice(boolean enable) { if (enable) { when(mHeadsetService.isAptXSwbEnabled()).thenReturn(true); mSetFlagsRule.enableFlags(Flags.FLAG_HFP_CODEC_APTX_VOICE); Assert.assertTrue(Flags.hfpCodecAptxVoice()); } else { mSetFlagsRule.disableFlags(Flags.FLAG_HFP_CODEC_APTX_VOICE); Assert.assertFalse(Flags.hfpCodecAptxVoice()); } } } flags/Android.bp +0 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ aconfig_declarations { "btm_ble.aconfig", "connectivity.aconfig", "device_iot_config.aconfig", "did.aconfig", "dis.aconfig", "dumpsys.aconfig", "framework.aconfig", Loading Loading
android/app/src/com/android/bluetooth/hfp/HeadsetService.java +13 −27 Original line number Diff line number Diff line Loading @@ -196,7 +196,6 @@ public class HeadsetService extends ProfileService { // Step 3: Initialize system interface mSystemInterface = HeadsetObjectsFactory.getInstance().makeSystemInterface(this); // Step 4: Initialize native interface if (Flags.hfpCodecAptxVoice()) { mIsAptXSwbEnabled = SystemProperties.getBoolean("bluetooth.hfp.codec_aptx_voice.enabled", false); Log.i(TAG, "mIsAptXSwbEnabled: " + mIsAptXSwbEnabled); Loading @@ -204,17 +203,12 @@ public class HeadsetService extends ProfileService { SystemProperties.getBoolean( "bluetooth.hfp.swb.aptx.power_management.enabled", false); Log.i(TAG, "mIsAptXSwbPmEnabled: " + mIsAptXSwbPmEnabled); } setHeadsetService(this); mMaxHeadsetConnections = mAdapterService.getMaxConnectedAudioDevices(); // Add 1 to allow a pending device to be connecting or disconnecting mNativeInterface.init(mMaxHeadsetConnections + 1, isInbandRingingEnabled()); if (Flags.hfpCodecAptxVoice()) { enableSwbCodec( HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX, mIsAptXSwbEnabled, mActiveDevice); } HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX, mIsAptXSwbEnabled, mActiveDevice); // Step 6: Setup broadcast receivers IntentFilter filter = new IntentFilter(); filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); Loading Loading @@ -1185,9 +1179,7 @@ public class HeadsetService extends ProfileService { } stateMachine.sendMessage(HeadsetStateMachine.CONNECT_AUDIO, device); } if (Flags.hfpCodecAptxVoice()) { enableSwbCodec(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX, true, device); } return true; } Loading Loading @@ -1227,9 +1219,7 @@ public class HeadsetService extends ProfileService { } stateMachine.sendMessage(HeadsetStateMachine.DISCONNECT_AUDIO, device); } if (Flags.hfpCodecAptxVoice()) { enableSwbCodec(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX, false, device); } return true; } Loading Loading @@ -1902,9 +1892,7 @@ public class HeadsetService extends ProfileService { if (!mSystemInterface.getVoiceRecognitionWakeLock().isHeld()) { mSystemInterface.getVoiceRecognitionWakeLock().acquire(sStartVrTimeoutMs); } if (Flags.hfpCodecAptxVoice()) { enableSwbCodec(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX, true, fromDevice); } return true; } } Loading Loading @@ -1956,9 +1944,7 @@ public class HeadsetService extends ProfileService { Log.w(TAG, "stopVoiceRecognitionByHeadset: failed request from " + fromDevice); return false; } if (Flags.hfpCodecAptxVoice()) { enableSwbCodec(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX, false, fromDevice); } return true; } } Loading
android/app/src/com/android/bluetooth/hfp/HeadsetStateMachine.java +3 −7 Original line number Diff line number Diff line Loading @@ -512,9 +512,6 @@ class HeadsetStateMachine extends StateMachine { abstract int getAudioStateInt(); protected void setAptxVoice(HeadsetCallState callState) { if (!Flags.hfpCodecAptxVoice()) { return; } if (!mHeadsetService.isAptXSwbEnabled()) { return; } Loading Loading @@ -1339,8 +1336,7 @@ class HeadsetStateMachine extends StateMachine { mSystemInterface.getAudioManager().setLeAudioSuspended(true); } if (Flags.hfpCodecAptxVoice() && mHeadsetService.isAptXSwbEnabled() if (mHeadsetService.isAptXSwbEnabled() && mHeadsetService.isAptXSwbPmEnabled()) { if (!mHeadsetService.isVirtualCallStarted() && mSystemInterface.isHighDefCallInProgress()) { Loading Loading @@ -1880,7 +1876,7 @@ class HeadsetStateMachine extends StateMachine { + (" hasSwbEnabled=" + mHasSwbLc3Enabled) + (" hasAptXSwbEnabled=" + mHasSwbAptXEnabled)); am.setParameters("bt_lc3_swb=" + (mHasSwbLc3Enabled ? "on" : "off")); if (Flags.hfpCodecAptxVoice() && mHeadsetService.isAptXSwbEnabled()) { if (mHeadsetService.isAptXSwbEnabled()) { /* AptX bt_swb: 0 -> on, 65535 -> off */ am.setParameters("bt_swb=" + (mHasSwbAptXEnabled ? "0" : "65535")); } Loading Loading @@ -2030,7 +2026,7 @@ class HeadsetStateMachine extends StateMachine { switch (wbsConfig) { case HeadsetHalConstants.BTHF_WBS_YES: mHasWbsEnabled = true; if (Flags.hfpCodecAptxVoice() && mHeadsetService.isAptXSwbEnabled()) { if (mHeadsetService.isAptXSwbEnabled()) { mHasSwbAptXEnabled = false; } break; Loading
android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceAndStateMachineTest.java +61 −88 Original line number Diff line number Diff line Loading @@ -187,7 +187,6 @@ public class HeadsetServiceAndStateMachineTest { verify(mNativeInterface).init(MAX_HEADSET_CONNECTIONS + 1, true /* inband ringtone */); // Set up the Connection State Changed receiver if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), Loading @@ -196,7 +195,6 @@ public class HeadsetServiceAndStateMachineTest { "bluetooth.hfp.codec_aptx_voice.enabled", false)), eq(mHeadsetService.getActiveDevice())); } } @After public void tearDown() { Loading Loading @@ -743,13 +741,11 @@ public class HeadsetServiceAndStateMachineTest { verify(mNativeInterface, times(2)) .atResponseCode(device, HeadsetHalConstants.AT_RESPONSE_OK, 0); verify(mNativeInterface).disconnectAudio(device); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(device)); } verifyNoMoreInteractions(mNativeInterface); } Loading Loading @@ -819,13 +815,11 @@ public class HeadsetServiceAndStateMachineTest { mTestLooper.dispatchAll(); verify(mNativeInterface).atResponseCode(device, HeadsetHalConstants.AT_RESPONSE_ERROR, 0); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(device)); } verifyNoMoreInteractions(ignoreStubs(mNativeInterface)); verifyZeroInteractions(mAudioManager); } Loading Loading @@ -904,13 +898,11 @@ public class HeadsetServiceAndStateMachineTest { mTestLooper.dispatchAll(); verify(mNativeInterface).stopVoiceRecognition(device); verify(mNativeInterface).disconnectAudio(device); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(device)); } verifyNoMoreInteractions(mNativeInterface); } Loading Loading @@ -990,13 +982,11 @@ public class HeadsetServiceAndStateMachineTest { verify(mAudioManager).setA2dpSuspended(true); verify(mAudioManager).setLeAudioSuspended(true); verify(mNativeInterface).connectAudio(deviceA); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(deviceA)); } verifyNoMoreInteractions(ignoreStubs(mNativeInterface)); } Loading Loading @@ -1060,13 +1050,11 @@ public class HeadsetServiceAndStateMachineTest { verify(mAudioManager).setA2dpSuspended(true); verify(mAudioManager).setLeAudioSuspended(true); verify(mNativeInterface).connectAudio(deviceA); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(deviceA)); } verifyNoMoreInteractions(ignoreStubs(mNativeInterface)); } Loading Loading @@ -1114,13 +1102,11 @@ public class HeadsetServiceAndStateMachineTest { verify(mNativeInterface).disconnectAudio(deviceB); // This request should still fail verify(mNativeInterface).atResponseCode(deviceA, HeadsetHalConstants.AT_RESPONSE_ERROR, 0); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(deviceB)); } verifyNoMoreInteractions(ignoreStubs(mNativeInterface)); } Loading Loading @@ -1177,13 +1163,11 @@ public class HeadsetServiceAndStateMachineTest { deviceA, BluetoothHeadset.STATE_AUDIO_CONNECTED, BluetoothHeadset.STATE_AUDIO_CONNECTING); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(deviceA)); } verifyNoMoreInteractions(ignoreStubs(mNativeInterface)); } Loading Loading @@ -1301,7 +1285,7 @@ public class HeadsetServiceAndStateMachineTest { BluetoothHeadset.STATE_AUDIO_CONNECTING); // Check that AptX SWB disabled, LC3 SWB disabled verifySetParametersToAudioSystemInvocation(false, false); verifySetParametersToAudioSystemInvocation(false, true, false); verify(mNativeInterface, times(1)).connectAudio(eq(device)); verify(mNativeInterface).sendBsir(eq(device), eq(true)); verify(mNativeInterface, times(2)) Loading Loading @@ -1385,7 +1369,7 @@ public class HeadsetServiceAndStateMachineTest { BluetoothHeadset.STATE_AUDIO_CONNECTING); // Check that AptX SWB enabled, LC3 SWB disabled verifySetParametersToAudioSystemInvocation(false, true); verifySetParametersToAudioSystemInvocation(false, true, true); verify(mNativeInterface, times(1)).connectAudio(eq(device)); verify(mNativeInterface).sendBsir(eq(device), eq(true)); verify(mNativeInterface, times(2)) Loading Loading @@ -1422,7 +1406,7 @@ public class HeadsetServiceAndStateMachineTest { // Start voice recognition startVoiceRecognitionFromHf(device); // Check that proper codecs were set verifySetParametersToAudioSystemInvocation(true, false); verifySetParametersToAudioSystemInvocation(true, true, false); configureHeadsetServiceForAptxVoice(false); } Loading Loading @@ -1453,7 +1437,7 @@ public class HeadsetServiceAndStateMachineTest { // Start voice recognition startVoiceRecognitionFromHf(device); // Check that proper codecs were set verifySetParametersToAudioSystemInvocation(true, false); verifySetParametersToAudioSystemInvocation(true, false, false); } /** Loading Loading @@ -1483,7 +1467,7 @@ public class HeadsetServiceAndStateMachineTest { // Start voice recognition startVoiceRecognitionFromHf(device); // Check that proper codecs were set verifySetParametersToAudioSystemInvocation(false, true); verifySetParametersToAudioSystemInvocation(false, true, true); configureHeadsetServiceForAptxVoice(false); } Loading Loading @@ -1512,7 +1496,7 @@ public class HeadsetServiceAndStateMachineTest { // Start voice recognition startVoiceRecognitionFromHf(device); // Check that proper codecs were set verifySetParametersToAudioSystemInvocation(false, false); verifySetParametersToAudioSystemInvocation(false, true, false); configureHeadsetServiceForAptxVoice(false); } Loading Loading @@ -1541,7 +1525,7 @@ public class HeadsetServiceAndStateMachineTest { // Start voice recognition startVoiceRecognitionFromHf(device); // Check that proper codecs were set verifySetParametersToAudioSystemInvocation(false, false); verifySetParametersToAudioSystemInvocation(false, false, false); } /** Loading Loading @@ -1671,13 +1655,11 @@ public class HeadsetServiceAndStateMachineTest { verify(mAudioManager).setA2dpSuspended(true); verify(mAudioManager).setLeAudioSuspended(true); verify(mNativeInterface).connectAudio(device); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(device)); } verifyAudioStateIntent( device, BluetoothHeadset.STATE_AUDIO_CONNECTING, Loading Loading @@ -1726,13 +1708,11 @@ public class HeadsetServiceAndStateMachineTest { verify(mAudioManager).setA2dpSuspended(true); verify(mAudioManager).setLeAudioSuspended(true); verify(mNativeInterface).connectAudio(device); if (Flags.hfpCodecAptxVoice()) { verify(mNativeInterface, atLeast(1)) .enableSwb( eq(HeadsetHalConstants.BTHF_SWB_CODEC_VENDOR_APTX), anyBoolean(), eq(device)); } verifyAudioStateIntent( device, BluetoothHeadset.STATE_AUDIO_CONNECTING, Loading Loading @@ -1935,9 +1915,9 @@ public class HeadsetServiceAndStateMachineTest { } private void verifySetParametersToAudioSystemInvocation( boolean lc3Enabled, boolean aptxEnabled) { boolean lc3Enabled, boolean aptxSupported, boolean aptxEnabled) { verify(mAudioManager).setParameters(lc3Enabled ? "bt_lc3_swb=on" : "bt_lc3_swb=off"); if (Flags.hfpCodecAptxVoice()) { if (aptxSupported) { verify(mAudioManager).setParameters(aptxEnabled ? "bt_swb=0" : "bt_swb=65535"); } } Loading @@ -1958,13 +1938,6 @@ public class HeadsetServiceAndStateMachineTest { } private void configureHeadsetServiceForAptxVoice(boolean enable) { if (enable) { mSetFlagsRule.enableFlags(Flags.FLAG_HFP_CODEC_APTX_VOICE); assertThat(Flags.hfpCodecAptxVoice()).isTrue(); } else { mSetFlagsRule.disableFlags(Flags.FLAG_HFP_CODEC_APTX_VOICE); assertThat(Flags.hfpCodecAptxVoice()).isFalse(); } setAptxVoiceSystemProperties(enable, enable); mHeadsetService.mIsAptXSwbEnabled = enable; assertThat(mHeadsetService.isAptXSwbEnabled()).isEqualTo(enable); Loading
android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetStateMachineTest.java +2 −9 Original line number Diff line number Diff line Loading @@ -2105,11 +2105,9 @@ public class HeadsetStateMachineTest { verify(mAudioManager, timeout(ASYNC_CALL_TIMEOUT_MILLIS)) .setParameters(lc3Enabled ? "bt_lc3_swb=on" : "bt_lc3_swb=off"); if (Flags.hfpCodecAptxVoice()) { verify(mAudioManager, timeout(ASYNC_CALL_TIMEOUT_MILLIS)) .setParameters(aptxEnabled ? "bt_swb=0" : "bt_swb=65535"); } } /** * set sink audio policy Loading Loading @@ -2296,11 +2294,6 @@ public class HeadsetStateMachineTest { private void configureHeadsetServiceForAptxVoice(boolean enable) { if (enable) { when(mHeadsetService.isAptXSwbEnabled()).thenReturn(true); mSetFlagsRule.enableFlags(Flags.FLAG_HFP_CODEC_APTX_VOICE); Assert.assertTrue(Flags.hfpCodecAptxVoice()); } else { mSetFlagsRule.disableFlags(Flags.FLAG_HFP_CODEC_APTX_VOICE); Assert.assertFalse(Flags.hfpCodecAptxVoice()); } } }
flags/Android.bp +0 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ aconfig_declarations { "btm_ble.aconfig", "connectivity.aconfig", "device_iot_config.aconfig", "did.aconfig", "dis.aconfig", "dumpsys.aconfig", "framework.aconfig", Loading