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
This commit is contained in:
Alice Kuo
2024-05-11 03:12:57 +08:00
parent 211afbea96
commit 7443e2dfe8
2 changed files with 21 additions and 4 deletions

View File

@@ -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;
}
}
/**

View File

@@ -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();
}
}