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

Commit 22e2bd2b authored by Jack He's avatar Jack He Committed by Automerger Merge Worker
Browse files

Merge changes from topic "LeAudioBeta" into udc-dev am: 2605ccbc

parents b4929148 2605ccbc
Loading
Loading
Loading
Loading
+7 −4
Original line number Original line Diff line number Diff line
@@ -221,14 +221,17 @@
    <!-- UI debug setting: Disable Bluetooth hardware offload [CHAR LIMIT=none] -->
    <!-- UI debug setting: Disable Bluetooth hardware offload [CHAR LIMIT=none] -->
    <string name="bluetooth_disable_hw_offload_dialog_cancel">Cancel</string>
    <string name="bluetooth_disable_hw_offload_dialog_cancel">Cancel</string>
    <!-- Setting Checkbox title for disabling Bluetooth LE Audio feature. [CHAR LIMIT=40] -->
    <!-- Setting toggle title for disabling Bluetooth LE Audio feature. [CHAR LIMIT=40] -->
    <string name="bluetooth_disable_leaudio">Disable Bluetooth LE audio</string>
    <string name="bluetooth_disable_leaudio">Disable Bluetooth LE audio</string>
    <!-- Summary of checkbox for disabling Bluetooth LE audio [CHAR LIMIT=none]-->
    <!-- Summary of toggle for disabling Bluetooth LE audio [CHAR LIMIT=none]-->
    <string name="bluetooth_disable_leaudio_summary">Disables Bluetooth LE audio feature if the device supports LE audio hardware capabilities.</string>
    <string name="bluetooth_disable_leaudio_summary">Disables Bluetooth LE audio feature if the device supports LE audio hardware capabilities.</string>
    <!-- Setting Checkbox title for enabling Bluetooth LE Audio Allow List. [CHAR LIMIT=none] -->
    <!-- Setting toggle title for enabling Bluetooth LE Audio toggle in Device Details. [CHAR LIMIT=40] -->
    <string name="bluetooth_show_leaudio_device_details">Show LE audio toggle in Device Details</string>
    <!-- Setting toggle title for enabling Bluetooth LE Audio Allow List. [CHAR LIMIT=none] -->
    <string name="bluetooth_enable_leaudio_allow_list">Enable Bluetooth LE audio Allow List</string>
    <string name="bluetooth_enable_leaudio_allow_list">Enable Bluetooth LE audio Allow List</string>
    <!-- Summary of checkbox for enabling Bluetooth LE audio Allow List [CHAR LIMIT=none]-->
    <!-- Summary of toggle for enabling Bluetooth LE audio Allow List [CHAR LIMIT=none]-->
    <string name="bluetooth_enable_leaudio_allow_list_summary">Enable Bluetooth LE audio allow list feature.</string>
    <string name="bluetooth_enable_leaudio_allow_list_summary">Enable Bluetooth LE audio allow list feature.</string>
    <!-- Title for Bluetooth device group with media capability group [CHAR LIMIT=none]-->
    <!-- Title for Bluetooth device group with media capability group [CHAR LIMIT=none]-->
+4 −0
Original line number Original line Diff line number Diff line
@@ -350,6 +350,10 @@
            android:title="@string/bluetooth_disable_leaudio"
            android:title="@string/bluetooth_disable_leaudio"
            android:summary="@string/bluetooth_disable_leaudio_summary" />
            android:summary="@string/bluetooth_disable_leaudio_summary" />


        <SwitchPreference
            android:key="bluetooth_show_leaudio_device_details"
            android:title="@string/bluetooth_show_leaudio_device_details"/>

        <SwitchPreference
        <SwitchPreference
            android:key="bluetooth_enable_leaudio_allow_list"
            android:key="bluetooth_enable_leaudio_allow_list"
            android:title="@string/bluetooth_enable_leaudio_allow_list"
            android:title="@string/bluetooth_enable_leaudio_allow_list"
+7 −0
Original line number Original line Diff line number Diff line
@@ -77,6 +77,7 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll
    private Map<String, List<CachedBluetoothDevice>> mProfileDeviceMap =
    private Map<String, List<CachedBluetoothDevice>> mProfileDeviceMap =
            new HashMap<String, List<CachedBluetoothDevice>>();
            new HashMap<String, List<CachedBluetoothDevice>>();
    private boolean mIsLeContactSharingEnabled = false;
    private boolean mIsLeContactSharingEnabled = false;
    private boolean mIsLeAudioToggleEnabled = false;


    @VisibleForTesting
    @VisibleForTesting
    PreferenceCategory mProfilesContainer;
    PreferenceCategory mProfilesContainer;
@@ -97,6 +98,8 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll
        mProfilesContainer.setLayoutResource(R.layout.preference_bluetooth_profile_category);
        mProfilesContainer.setLayoutResource(R.layout.preference_bluetooth_profile_category);
        mIsLeContactSharingEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI,
        mIsLeContactSharingEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI,
                SettingsUIDeviceConfig.BT_LE_AUDIO_CONTACT_SHARING_ENABLED, true);
                SettingsUIDeviceConfig.BT_LE_AUDIO_CONTACT_SHARING_ENABLED, true);
        mIsLeAudioToggleEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI,
                SettingsUIDeviceConfig.BT_LE_AUDIO_DEVICE_DETAIL_ENABLED, false);
        // Call refresh here even though it will get called later in onResume, to avoid the
        // Call refresh here even though it will get called later in onResume, to avoid the
        // list of switches appearing to "pop" into the page.
        // list of switches appearing to "pop" into the page.
        refresh();
        refresh();
@@ -142,6 +145,10 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll
            profilePref.setEnabled(!mCachedDevice.isBusy());
            profilePref.setEnabled(!mCachedDevice.isBusy());
        }
        }


        if (profile instanceof LeAudioProfile && !mIsLeAudioToggleEnabled) {
            profilePref.setVisible(false);
        }

        if (profile instanceof MapProfile) {
        if (profile instanceof MapProfile) {
            profilePref.setChecked(device.getMessageAccessPermission()
            profilePref.setChecked(device.getMessageAccessPermission()
                    == BluetoothDevice.ACCESS_ALLOWED);
                    == BluetoothDevice.ACCESS_ALLOWED);
+5 −0
Original line number Original line Diff line number Diff line
@@ -42,4 +42,9 @@ public class SettingsUIDeviceConfig {
     * {@code true} whether or not event_log for generic actions is enabled. Default is true.
     * {@code true} whether or not event_log for generic actions is enabled. Default is true.
     */
     */
    public static final String GENERIC_EVENT_LOGGING_ENABLED = "event_logging_enabled";
    public static final String GENERIC_EVENT_LOGGING_ENABLED = "event_logging_enabled";
    /**
     * {@code true} whether to show LE Audio toggle in device detail page. Default is false.
     */
    public static final String BT_LE_AUDIO_DEVICE_DETAIL_ENABLED =
            "bt_le_audio_device_detail_enabled";
}
}
+102 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.development;

import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothManager;
import android.bluetooth.BluetoothStatusCodes;
import android.content.Context;
import android.provider.DeviceConfig;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.SwitchPreference;

import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.SettingsUIDeviceConfig;
import com.android.settingslib.development.DeveloperOptionsPreferenceController;

/**
 * Preference controller to control whether display Bluetooth LE audio toggle in device detail
 * settings page or not.
 */
public class BluetoothLeAudioDeviceDetailsPreferenceController
        extends DeveloperOptionsPreferenceController
        implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin {

    private static final String PREFERENCE_KEY = "bluetooth_show_leaudio_device_details";
    static int sLeAudioSupportedStateCache = BluetoothStatusCodes.ERROR_UNKNOWN;

    @VisibleForTesting
    BluetoothAdapter mBluetoothAdapter;

    public BluetoothLeAudioDeviceDetailsPreferenceController(Context context) {
        super(context);
        mBluetoothAdapter = context.getSystemService(BluetoothManager.class).getAdapter();
    }

    @Override
    public String getPreferenceKey() {
        return PREFERENCE_KEY;
    }

    @Override
    public boolean isAvailable() {
        if (sLeAudioSupportedStateCache == BluetoothStatusCodes.ERROR_UNKNOWN
                && mBluetoothAdapter != null) {
            int isLeAudioSupported = mBluetoothAdapter.isLeAudioSupported();
            if (isLeAudioSupported != BluetoothStatusCodes.ERROR_BLUETOOTH_NOT_ENABLED) {
                sLeAudioSupportedStateCache = isLeAudioSupported;
            }
        }

        // Display the option only if LE Audio is supported
        return (sLeAudioSupportedStateCache == BluetoothStatusCodes.FEATURE_SUPPORTED);
    }

    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        final boolean isEnabled = (Boolean) newValue;
        DeviceConfig.setProperty(
                DeviceConfig.NAMESPACE_SETTINGS_UI,
                SettingsUIDeviceConfig.BT_LE_AUDIO_DEVICE_DETAIL_ENABLED,
                isEnabled ? "true" : "false", false);
        return true;
    }

    @Override
    public void updateState(Preference preference) {
        if (!isAvailable()) {
            return;
        }

        final boolean leAudioDeviceDetailEnabled = DeviceConfig.getBoolean(
                DeviceConfig.NAMESPACE_SETTINGS_UI,
                SettingsUIDeviceConfig.BT_LE_AUDIO_DEVICE_DETAIL_ENABLED, false);

        ((SwitchPreference) mPreference).setChecked(leAudioDeviceDetailEnabled);
    }

    @Override
    protected void onDeveloperOptionsSwitchDisabled() {
        super.onDeveloperOptionsSwitchDisabled();
        // Reset the toggle to null when the developer option is disabled
        DeviceConfig.setProperty(
                DeviceConfig.NAMESPACE_SETTINGS_UI,
                SettingsUIDeviceConfig.BT_LE_AUDIO_DEVICE_DETAIL_ENABLED, "null", false);
    }
}
Loading