From 7443e2dfe84e01ce2491041b5d75153dc8b4eeb3 Mon Sep 17 00:00:00 2001 From: Alice Kuo Date: Sat, 11 May 2024 03:12:57 +0800 Subject: [PATCH] Avoid update the le audio mode as bluetooth turn off 1. Fix the wrong "disable" setting as bluetooth state is off 2. disable the switcher as bluetooth state is disabled Bug: 336448875 Test: atest Change-Id: I34d9f6aef11712cad16ff105c5859a694f1fe9c9 --- .../BluetoothLeAudioModePreferenceController.java | 13 +++++++++---- ...luetoothLeAudioModePreferenceControllerTest.java | 12 ++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/development/BluetoothLeAudioModePreferenceController.java b/src/com/android/settings/development/BluetoothLeAudioModePreferenceController.java index 06cfe65043e..739258d3fda 100644 --- a/src/com/android/settings/development/BluetoothLeAudioModePreferenceController.java +++ b/src/com/android/settings/development/BluetoothLeAudioModePreferenceController.java @@ -96,17 +96,17 @@ public class BluetoothLeAudioModePreferenceController return; } + String currentValue; if (mBluetoothAdapter.isLeAudioBroadcastSourceSupported() == BluetoothStatusCodes.FEATURE_SUPPORTED) { - SystemProperties.set(LE_AUDIO_DYNAMIC_SWITCHER_MODE_PROPERTY, "broadcast"); + currentValue = "broadcast"; } else if (mBluetoothAdapter.isLeAudioSupported() == BluetoothStatusCodes.FEATURE_SUPPORTED) { - SystemProperties.set(LE_AUDIO_DYNAMIC_SWITCHER_MODE_PROPERTY, "unicast"); + currentValue = "unicast"; } else { - SystemProperties.set(LE_AUDIO_DYNAMIC_SWITCHER_MODE_PROPERTY, "disabled"); + currentValue = "disabled"; } - final String currentValue = SystemProperties.get(LE_AUDIO_DYNAMIC_SWITCHER_MODE_PROPERTY); int index = 0; for (int i = 0; i < mListValues.length; i++) { if (TextUtils.equals(currentValue, mListValues[i])) { @@ -118,6 +118,11 @@ public class BluetoothLeAudioModePreferenceController final ListPreference listPreference = (ListPreference) preference; listPreference.setValue(mListValues[index]); listPreference.setSummary(mListSummaries[index]); + + if (!mBluetoothAdapter.isEnabled()) { + listPreference.setEnabled(false); + return; + } } /** diff --git a/tests/robotests/src/com/android/settings/development/BluetoothLeAudioModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/BluetoothLeAudioModePreferenceControllerTest.java index f35fb17f8ca..965b34e7370 100644 --- a/tests/robotests/src/com/android/settings/development/BluetoothLeAudioModePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/BluetoothLeAudioModePreferenceControllerTest.java @@ -105,4 +105,16 @@ public class BluetoothLeAudioModePreferenceControllerTest { assertThat(SystemProperties.get(LE_AUDIO_DYNAMIC_SWITCHER_MODE_PROPERTY, mListValues[0]) .equals(mController.mNewMode)).isFalse(); } + + @Test + public void onBluetoothTurnOff_shouldNotChangeLeAudioMode() { + SystemProperties.set(LE_AUDIO_DYNAMIC_SWITCHER_MODE_PROPERTY, mListValues[1]); + when(mBluetoothAdapter.isEnabled()) + .thenReturn(false); + + mController.updateState(mPreference); + final String mode = SystemProperties + .get(LE_AUDIO_DYNAMIC_SWITCHER_MODE_PROPERTY, mListValues[0]); + assertThat(mode.equals(mListValues[1])).isTrue(); + } }