Loading src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java +26 −16 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -70,6 +72,7 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll private List<CachedBluetoothDevice> mAllOfCachedDevices; private Map<String, List<CachedBluetoothDevice>> mProfileDeviceMap = new HashMap<String, List<CachedBluetoothDevice>>(); private boolean mIsLeContactSharingEnabled = false; @VisibleForTesting PreferenceCategory mProfilesContainer; Loading @@ -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(); Loading Loading @@ -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<CachedBluetoothDevice> 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<CachedBluetoothDevice> deviceList = mProfileDeviceMap.get( Loading @@ -145,12 +140,9 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll } else if (profile instanceof LeAudioProfile) { List<CachedBluetoothDevice> 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 Loading @@ -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()); } Loading Loading @@ -203,6 +199,20 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll } } private boolean isLeAudioEnabled(){ LocalBluetoothProfile leAudio = mProfileManager.getLeAudioProfile(); if (leAudio != null) { List<CachedBluetoothDevice> 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. */ Loading src/com/android/settings/core/SettingsUIDeviceConfig.java +5 −1 Original line number Diff line number Diff line Loading @@ -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. */ Loading Loading
src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java +26 −16 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -70,6 +72,7 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll private List<CachedBluetoothDevice> mAllOfCachedDevices; private Map<String, List<CachedBluetoothDevice>> mProfileDeviceMap = new HashMap<String, List<CachedBluetoothDevice>>(); private boolean mIsLeContactSharingEnabled = false; @VisibleForTesting PreferenceCategory mProfilesContainer; Loading @@ -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(); Loading Loading @@ -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<CachedBluetoothDevice> 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<CachedBluetoothDevice> deviceList = mProfileDeviceMap.get( Loading @@ -145,12 +140,9 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll } else if (profile instanceof LeAudioProfile) { List<CachedBluetoothDevice> 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 Loading @@ -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()); } Loading Loading @@ -203,6 +199,20 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll } } private boolean isLeAudioEnabled(){ LocalBluetoothProfile leAudio = mProfileManager.getLeAudioProfile(); if (leAudio != null) { List<CachedBluetoothDevice> 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. */ Loading
src/com/android/settings/core/SettingsUIDeviceConfig.java +5 −1 Original line number Diff line number Diff line Loading @@ -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. */ Loading