Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1e89cd32 authored by SongFerng Wang's avatar SongFerng Wang Committed by Automerger Merge Worker
Browse files

Merge "Hide the Contact sharing toggle for LE audio mode" am: 3f830cc6

parents a8ff1f72 3f830cc6
Loading
Loading
Loading
Loading
+26 −16
Original line number Diff line number Diff line
@@ -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<CachedBluetoothDevice> mAllOfCachedDevices;
    private Map<String, List<CachedBluetoothDevice>> mProfileDeviceMap =
            new HashMap<String, List<CachedBluetoothDevice>>();
    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<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(
@@ -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
@@ -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<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.
     */
+5 −1
Original line number Diff line number Diff line
@@ -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.
     */