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

Commit 8e25a3a6 authored by tim peng's avatar tim peng Committed by Android (Google) Code Review
Browse files

Merge "Apply new preference and controller for Bluetooth developer option"

parents 02bb6e7e 548e927e
Loading
Loading
Loading
Loading
+0 −9
Original line number Diff line number Diff line
@@ -54,17 +54,8 @@
            <include
                android:id="@+id/bluetooth_audio_codec_ldac"
                layout="@layout/preference_widget_dialog_radiobutton"/>

            <include
                android:id="@+id/bluetooth_audio_codec_enable_optional"
                layout="@layout/preference_widget_dialog_radiobutton"/>

            <include
                android:id="@+id/bluetooth_audio_codec_disable_optional"
                layout="@layout/preference_widget_dialog_radiobutton"/>
        </RadioGroup>


        <include
                android:id="@+id/bluetooth_audio_codec_help_info"
                layout="@layout/preference_widget_dialog_summary"/>
+29 −20
Original line number Diff line number Diff line
@@ -288,40 +288,49 @@
            android:entries="@array/bluetooth_avrcp_versions"
            android:entryValues="@array/bluetooth_avrcp_version_values" />

        <ListPreference
            android:key="bluetooth_select_a2dp_codec"
        <SwitchPreference
            android:key="bluetooth_hd_audio_settings"
            android:title="@string/bluetooth_profile_a2dp_high_quality_unknown_codec"/>

        <com.android.settings.development.bluetooth.BluetoothCodecDialogPreference
            android:key="bluetooth_audio_codec_settings"
            android:title="@string/bluetooth_select_a2dp_codec_type"
            android:dialogTitle="@string/bluetooth_select_a2dp_codec_type_dialog_title"
            android:entries="@array/bluetooth_a2dp_codec_titles"
            android:entryValues="@array/bluetooth_a2dp_codec_values" />
            android:dialogLayout="@layout/bluetooth_audio_codec_dialog"
            android:positiveButtonText=""
            android:negativeButtonText="@string/dlg_ok"/>

        <ListPreference
            android:key="bluetooth_select_a2dp_sample_rate"
        <com.android.settings.development.bluetooth.BluetoothSampleRateDialogPreference
            android:key="bluetooth_sample_rate_settings"
            android:title="@string/bluetooth_select_a2dp_codec_sample_rate"
            android:dialogTitle="@string/bluetooth_select_a2dp_codec_sample_rate_dialog_title"
            android:entries="@array/bluetooth_a2dp_codec_sample_rate_titles"
            android:entryValues="@array/bluetooth_a2dp_codec_sample_rate_values" />
            android:dialogLayout="@layout/bluetooth_audio_sample_rate_dialog"
            android:positiveButtonText=""
            android:negativeButtonText="@string/dlg_ok"/>

        <ListPreference
            android:key="bluetooth_select_a2dp_bits_per_sample"
        <com.android.settings.development.bluetooth.BluetoothBitPerSampleDialogPreference
            android:key="bluetooth_bit_per_sample_settings"
            android:title="@string/bluetooth_select_a2dp_codec_bits_per_sample"
            android:dialogTitle="@string/bluetooth_select_a2dp_codec_bits_per_sample_dialog_title"
            android:entries="@array/bluetooth_a2dp_codec_bits_per_sample_titles"
            android:entryValues="@array/bluetooth_a2dp_codec_bits_per_sample_values" />
            android:dialogLayout="@layout/bluetooth_audio_bit_per_sample_dialog"
            android:positiveButtonText=""
            android:negativeButtonText="@string/dlg_ok"/>

        <ListPreference
            android:key="bluetooth_select_a2dp_channel_mode"
        <com.android.settings.development.bluetooth.BluetoothChannelModeDialogPreference
            android:key="bluetooth_channel_mode_settings"
            android:title="@string/bluetooth_select_a2dp_codec_channel_mode"
            android:dialogTitle="@string/bluetooth_select_a2dp_codec_channel_mode_dialog_title"
            android:entries="@array/bluetooth_a2dp_codec_channel_mode_titles"
            android:entryValues="@array/bluetooth_a2dp_codec_channel_mode_values" />
            android:dialogLayout="@layout/bluetooth_audio_channel_mode_dialog"
            android:positiveButtonText=""
            android:negativeButtonText="@string/dlg_ok"/>

        <ListPreference
            android:key="bluetooth_select_a2dp_ldac_playback_quality"
        <com.android.settings.development.bluetooth.BluetoothQualityDialogPreference
            android:key="bluetooth_a2dp_ldac_playback_quality"
            android:title="@string/bluetooth_select_a2dp_codec_ldac_playback_quality"
            android:dialogTitle="@string/bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title"
            android:entries="@array/bluetooth_a2dp_codec_ldac_playback_quality_titles"
            android:entryValues="@array/bluetooth_a2dp_codec_ldac_playback_quality_values" />
            android:dialogLayout="@layout/bluetooth_audio_quality_dialog"
            android:positiveButtonText=""
            android:negativeButtonText="@string/dlg_ok"/>

        <ListPreference
            android:key="bluetooth_max_connected_audio_devices"
+0 −102
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 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.BluetoothCodecConfig;
import android.content.Context;

import com.android.settings.R;
import com.android.settingslib.core.lifecycle.Lifecycle;

public class BluetoothAudioBitsPerSamplePreferenceController extends
        AbstractBluetoothA2dpPreferenceController {

    private static final int DEFAULT_INDEX = 0;
    private static final String BLUETOOTH_SELECT_A2DP_BITS_PER_SAMPLE_KEY =
            "bluetooth_select_a2dp_bits_per_sample";

    public BluetoothAudioBitsPerSamplePreferenceController(Context context, Lifecycle lifecycle,
            BluetoothA2dpConfigStore store) {
        super(context, lifecycle, store);
    }

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

    @Override
    protected String[] getListValues() {
        return mContext.getResources().getStringArray(
                R.array.bluetooth_a2dp_codec_bits_per_sample_values);
    }

    @Override
    protected String[] getListSummaries() {
        return mContext.getResources().getStringArray(
                R.array.bluetooth_a2dp_codec_bits_per_sample_summaries);
    }

    @Override
    protected int getDefaultIndex() {
        return DEFAULT_INDEX;
    }

    @Override
    protected void writeConfigurationValues(Object newValue) {
        final int index = mPreference.findIndexOfValue(newValue.toString());
        int bitsPerSampleValue = BluetoothCodecConfig.BITS_PER_SAMPLE_NONE; // default
        switch (index) {
            case 0:
                // Reset to default
                break;
            case 1:
                bitsPerSampleValue = BluetoothCodecConfig.BITS_PER_SAMPLE_16;
                break;
            case 2:
                bitsPerSampleValue = BluetoothCodecConfig.BITS_PER_SAMPLE_24;
                break;
            case 3:
                bitsPerSampleValue = BluetoothCodecConfig.BITS_PER_SAMPLE_32;
                break;
            default:
                break;
        }
        mBluetoothA2dpConfigStore.setBitsPerSample(bitsPerSampleValue);
    }

    @Override
    protected int getCurrentA2dpSettingIndex(BluetoothCodecConfig config) {
        final int bitsPerSample = config.getBitsPerSample();
        int index = DEFAULT_INDEX;
        switch (bitsPerSample) {
            case BluetoothCodecConfig.BITS_PER_SAMPLE_16:
                index = 1;
                break;
            case BluetoothCodecConfig.BITS_PER_SAMPLE_24:
                index = 2;
                break;
            case BluetoothCodecConfig.BITS_PER_SAMPLE_32:
                index = 3;
                break;
            case BluetoothCodecConfig.BITS_PER_SAMPLE_NONE:
            default:
                break;
        }
        return index;
    }
}
+0 −96
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 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.BluetoothCodecConfig;
import android.content.Context;

import com.android.settings.R;
import com.android.settingslib.core.lifecycle.Lifecycle;

public class BluetoothAudioChannelModePreferenceController extends
        AbstractBluetoothA2dpPreferenceController {

    private static final int DEFAULT_INDEX = 0;
    private static final String BLUETOOTH_SELECT_A2DP_CHANNEL_MODE_KEY =
            "bluetooth_select_a2dp_channel_mode";

    public BluetoothAudioChannelModePreferenceController(Context context, Lifecycle lifecycle,
            BluetoothA2dpConfigStore store) {
        super(context, lifecycle, store);
    }

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

    @Override
    protected String[] getListValues() {
        return mContext.getResources().getStringArray(
                R.array.bluetooth_a2dp_codec_channel_mode_values);
    }

    @Override
    protected String[] getListSummaries() {
        return mContext.getResources().getStringArray(
                R.array.bluetooth_a2dp_codec_channel_mode_summaries);
    }

    @Override
    protected int getDefaultIndex() {
        return DEFAULT_INDEX;
    }

    @Override
    protected void writeConfigurationValues(Object newValue) {
        final int index = mPreference.findIndexOfValue(newValue.toString());
        int channelModeValue = BluetoothCodecConfig.CHANNEL_MODE_NONE; // default
        switch (index) {
            case 0:
                // Reset to default
                break;
            case 1:
                channelModeValue = BluetoothCodecConfig.CHANNEL_MODE_MONO;
                break;
            case 2:
                channelModeValue = BluetoothCodecConfig.CHANNEL_MODE_STEREO;
                break;
            default:
                break;
        }
        mBluetoothA2dpConfigStore.setChannelMode(channelModeValue);
    }

    @Override
    protected int getCurrentA2dpSettingIndex(BluetoothCodecConfig config) {
        final int channelMode = config.getChannelMode();
        int index = DEFAULT_INDEX;
        switch (channelMode) {
            case BluetoothCodecConfig.CHANNEL_MODE_MONO:
                index = 1;
                break;
            case BluetoothCodecConfig.CHANNEL_MODE_STEREO:
                index = 2;
                break;
            case BluetoothCodecConfig.CHANNEL_MODE_NONE:
            default:
                break;
        }
        return index;
    }
}
+0 −156
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 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.BluetoothCodecConfig;
import android.content.Context;

import com.android.settings.R;
import com.android.settingslib.core.lifecycle.Lifecycle;

public class BluetoothAudioCodecPreferenceController extends
        AbstractBluetoothA2dpPreferenceController {

    private static final int DEFAULT_INDEX = 0;
    private static final String BLUETOOTH_SELECT_A2DP_CODEC_KEY = "bluetooth_select_a2dp_codec";

    public BluetoothAudioCodecPreferenceController(Context context, Lifecycle lifecycle,
            BluetoothA2dpConfigStore store) {
        super(context, lifecycle, store);
    }

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

    @Override
    protected String[] getListValues() {
        return mContext.getResources().getStringArray(
                R.array.bluetooth_a2dp_codec_values);
    }

    @Override
    protected String[] getListSummaries() {
        return mContext.getResources().getStringArray(
                R.array.bluetooth_a2dp_codec_summaries);
    }

    @Override
    protected int getDefaultIndex() {
        return DEFAULT_INDEX;
    }

    @Override
    protected void writeConfigurationValues(Object newValue) {
        final int index = mPreference.findIndexOfValue(newValue.toString());
        int codecTypeValue = BluetoothCodecConfig.SAMPLE_RATE_NONE; // default
        int codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT;
        switch (index) {
            case 0:
                // Reset the priority of the current codec to default
                final String oldValue = mPreference.getValue();
                switch (mPreference.findIndexOfValue(oldValue)) {
                    case 0:
                        break;      // No current codec
                    case 1:
                        codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC;
                        break;
                    case 2:
                        codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC;
                        break;
                    case 3:
                        codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX;
                        break;
                    case 4:
                        codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD;
                        break;
                    case 5:
                        codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC;
                        break;
                    default:
                        break;
                }
                break;
            case 1:
                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC;
                codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
                break;
            case 2:
                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC;
                codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
                break;
            case 3:
                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX;
                codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
                break;
            case 4:
                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD;
                codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
                break;
            case 5:
                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC;
                codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
                break;
            case 6:
                synchronized (mBluetoothA2dpConfigStore) {
                    if (mBluetoothA2dp != null) {
                        mBluetoothA2dp.enableOptionalCodecs(null); // Use current active device
                    }
                }
                return;
            case 7:
                synchronized (mBluetoothA2dpConfigStore) {
                    if (mBluetoothA2dp != null) {
                        mBluetoothA2dp.disableOptionalCodecs(null); // Use current active device
                    }
                }
                return;
            default:
                break;
        }
        mBluetoothA2dpConfigStore.setCodecType(codecTypeValue);
        mBluetoothA2dpConfigStore.setCodecPriority(codecPriorityValue);
    }

    @Override
    protected int getCurrentA2dpSettingIndex(BluetoothCodecConfig config) {
        final int codecType = config.getCodecType();
        int index = DEFAULT_INDEX;
        switch (codecType) {
            case BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC:
                index = 1;
                break;
            case BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC:
                index = 2;
                break;
            case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX:
                index = 3;
                break;
            case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD:
                index = 4;
                break;
            case BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC:
                index = 5;
                break;
            case BluetoothCodecConfig.SOURCE_CODEC_TYPE_INVALID:
            default:
                break;
        }
        return index;
    }
}
Loading