From 11b337178a74d539eee109c78726570e592a1974 Mon Sep 17 00:00:00 2001 From: SongFerngWang Date: Wed, 13 Apr 2022 21:58:55 +0800 Subject: [PATCH] Hide the Contact sharing toggle for LE audio mode 1. Add the device config key 2. Hide the Contact sharing toggle for LE audio mode Bug: 228415214 Test: manual test and take the screenshots at bug. Change-Id: I07674d0edbcd642814ed61ccd13cb4e1e42caec3 --- .../BluetoothDetailsProfilesController.java | 42 ++++++++++++------- .../settings/core/SettingsUIDeviceConfig.java | 6 ++- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java index b57ea928d99..36b571897fa 100644 --- a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java +++ b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java @@ -20,6 +20,7 @@ import android.bluetooth.BluetoothCsipSetCoordinator; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothProfile; import android.content.Context; +import android.provider.DeviceConfig; import android.text.TextUtils; import android.util.Log; @@ -31,6 +32,7 @@ import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.settings.R; +import com.android.settings.core.SettingsUIDeviceConfig; import com.android.settingslib.bluetooth.A2dpProfile; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.LeAudioProfile; @@ -70,6 +72,7 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll private List mAllOfCachedDevices; private Map> mProfileDeviceMap = new HashMap>(); + private boolean mIsLeContactSharingEnabled = false; @VisibleForTesting PreferenceCategory mProfilesContainer; @@ -88,6 +91,8 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll protected void init(PreferenceScreen screen) { mProfilesContainer = (PreferenceCategory)screen.findPreference(getPreferenceKey()); mProfilesContainer.setLayoutResource(R.layout.preference_bluetooth_profile_category); + mIsLeContactSharingEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI, + SettingsUIDeviceConfig.BT_LE_AUDIO_CONTACT_SHARING_ENABLED, false); // Call refresh here even though it will get called later in onResume, to avoid the // list of switches appearing to "pop" into the page. refresh(); @@ -119,21 +124,11 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll private void refreshProfilePreference(SwitchPreference profilePref, LocalBluetoothProfile profile) { BluetoothDevice device = mCachedDevice.getDevice(); - boolean isLeAudioEnabled = false; + boolean isLeAudioEnabled = isLeAudioEnabled(); if (profile instanceof A2dpProfile || HEADSET_CLIENT.equals(profile.toString())) { - LocalBluetoothProfile leAudio = mProfileManager.getLeAudioProfile(); - if (leAudio != null) { - List leAudioDeviceList = mProfileDeviceMap.get( - leAudio.toString()); - if (leAudioDeviceList != null - && leAudioDeviceList.stream() - .anyMatch(item -> leAudio.isEnabled(item.getDevice()))) { - isLeAudioEnabled = true; - } - } if (isLeAudioEnabled) { // If the LeAudio profile is enabled on the LeAudio devices, then the - // SwitchPreferences of A2dp profile and Hfp profile are graied out. + // SwitchPreferences of A2dp profile and Hfp profile are grayed out. profilePref.setEnabled(false); } else { List deviceList = mProfileDeviceMap.get( @@ -145,12 +140,9 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll } else if (profile instanceof LeAudioProfile) { List leAudioDeviceList = mProfileDeviceMap.get( profile.toString()); - boolean isLeAudioProfileEnable = - leAudioDeviceList != null && leAudioDeviceList.stream().anyMatch( - item -> profile.isEnabled(item.getDevice())); boolean isBusy = leAudioDeviceList != null && leAudioDeviceList.stream().anyMatch(item -> item.isBusy()); - if (isLeAudioProfileEnable && !isBusy) { + if (isLeAudioEnabled && !isBusy) { LocalBluetoothProfile a2dp = mProfileManager.getA2dpProfile(); LocalBluetoothProfile hfp = mProfileManager.getHfpClientProfile(); // If the LeAudio profile is enabled on the LeAudio devices, then the @@ -169,6 +161,10 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll } } profilePref.setEnabled(!isBusy); + } else if (profile instanceof PbapServerProfile + && isLeAudioEnabled + && !mIsLeContactSharingEnabled) { + profilePref.setEnabled(false); } else { profilePref.setEnabled(!mCachedDevice.isBusy()); } @@ -203,6 +199,20 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll } } + private boolean isLeAudioEnabled(){ + LocalBluetoothProfile leAudio = mProfileManager.getLeAudioProfile(); + if (leAudio != null) { + List leAudioDeviceList = mProfileDeviceMap.get( + leAudio.toString()); + if (leAudioDeviceList != null + && leAudioDeviceList.stream() + .anyMatch(item -> leAudio.isEnabled(item.getDevice()))) { + return true; + } + } + return false; + } + /** * Helper method to enable a profile for a device. */ diff --git a/src/com/android/settings/core/SettingsUIDeviceConfig.java b/src/com/android/settings/core/SettingsUIDeviceConfig.java index 8c85c82340c..94074dfa335 100644 --- a/src/com/android/settings/core/SettingsUIDeviceConfig.java +++ b/src/com/android/settings/core/SettingsUIDeviceConfig.java @@ -33,7 +33,11 @@ public class SettingsUIDeviceConfig { * {@code true} if near by device suggestion is enabled in connected device page */ public static final String BT_NEAR_BY_SUGGESTION_ENABLED = "bt_near_by_suggestion_enabled"; - + /** + * {@code true} if le audio contact sharing is enabled in BT device detail page + */ + public static final String BT_LE_AUDIO_CONTACT_SHARING_ENABLED = + "bt_le_audio_contact_sharing_enabled"; /** * {@code true} whether or not event_log for generic actions is enabled. Default is true. */