Grey out LE audio offload switcher as LE audio isn't enabled/supported
Screenshot: https://screenshot.googleplex.com/C6pRBzLh7CtNeXr
Bug: 233018305
Bug: 233005340
Test: make RunSettingsRoboTests ROBOTEST_FILTER=BluetoothLeAudioHwOffloadPreferenceControllerTest
Change-Id: I0ea498d2fa191f9b9352b37500a5d2c348b36ce0
diff --git a/src/com/android/settings/development/BluetoothLeAudioHwOffloadPreferenceController.java b/src/com/android/settings/development/BluetoothLeAudioHwOffloadPreferenceController.java
index f406ae7..751ddce 100644
--- a/src/com/android/settings/development/BluetoothLeAudioHwOffloadPreferenceController.java
+++ b/src/com/android/settings/development/BluetoothLeAudioHwOffloadPreferenceController.java
@@ -18,6 +18,9 @@
import static com.android.settings.development.BluetoothA2dpHwOffloadPreferenceController.A2DP_OFFLOAD_SUPPORTED_PROPERTY;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothManager;
+import android.bluetooth.BluetoothStatusCodes;
import android.content.Context;
import android.os.SystemProperties;
@@ -44,12 +47,16 @@
"ro.bluetooth.leaudio_offload.supported";
@VisibleForTesting
+ BluetoothAdapter mBluetoothAdapter;
+
+ @VisibleForTesting
boolean mChanged = false;
public BluetoothLeAudioHwOffloadPreferenceController(Context context,
DevelopmentSettingsDashboardFragment fragment) {
super(context);
mFragment = fragment;
+ mBluetoothAdapter = context.getSystemService(BluetoothManager.class).getAdapter();
}
@Override
@@ -66,10 +73,17 @@
@Override
public void updateState(Preference preference) {
+ if (mBluetoothAdapter == null) {
+ return;
+ }
+
+ final boolean leAudioEnabled =
+ (mBluetoothAdapter.isLeAudioSupported() == BluetoothStatusCodes.FEATURE_SUPPORTED);
+
final boolean offloadSupported =
SystemProperties.getBoolean(A2DP_OFFLOAD_SUPPORTED_PROPERTY, false)
&& SystemProperties.getBoolean(LE_AUDIO_OFFLOAD_SUPPORTED_PROPERTY, false);
- if (offloadSupported) {
+ if (leAudioEnabled && offloadSupported) {
final boolean offloadDisabled =
SystemProperties.getBoolean(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, true);
((SwitchPreference) mPreference).setChecked(offloadDisabled);
@@ -82,12 +96,20 @@
@Override
protected void onDeveloperOptionsSwitchDisabled() {
super.onDeveloperOptionsSwitchDisabled();
+ if (mBluetoothAdapter == null) {
+ return;
+ }
+
+ final boolean leAudioEnabled =
+ (mBluetoothAdapter.isLeAudioSupported() == BluetoothStatusCodes.FEATURE_SUPPORTED);
final boolean offloadSupported =
SystemProperties.getBoolean(A2DP_OFFLOAD_SUPPORTED_PROPERTY, false)
&& SystemProperties.getBoolean(LE_AUDIO_OFFLOAD_SUPPORTED_PROPERTY, false);
- if (offloadSupported) {
+ if (leAudioEnabled && offloadSupported) {
((SwitchPreference) mPreference).setChecked(true);
SystemProperties.set(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, "true");
+ } else {
+ mPreference.setEnabled(false);
}
}