diff options
Diffstat (limited to 'src/com')
8 files changed, 502 insertions, 46 deletions
diff --git a/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java b/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java index bb03df1f7b..e4e6493886 100644 --- a/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java +++ b/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java @@ -40,17 +40,15 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends static final int STREAMING_LABEL_ID = R.string.bluetooth_select_a2dp_codec_streaming_label; protected final BluetoothA2dpConfigStore mBluetoothA2dpConfigStore; - protected final Object mBluetoothA2dpLock; protected BluetoothA2dp mBluetoothA2dp; + protected ListPreference mPreference; private final String[] mListValues; private final String[] mListSummaries; - private ListPreference mPreference; public AbstractBluetoothA2dpPreferenceController(Context context, Lifecycle lifecycle, - Object bluetoothA2dpLock, BluetoothA2dpConfigStore store) { + BluetoothA2dpConfigStore store) { super(context); - mBluetoothA2dpLock = bluetoothA2dpLock; mBluetoothA2dpConfigStore = store; mListValues = getListValues(); mListSummaries = getListSummaries(); @@ -80,7 +78,7 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends writeConfigurationValues(newValue); final BluetoothCodecConfig codecConfig = mBluetoothA2dpConfigStore.createCodecConfig(); - synchronized (mBluetoothA2dpLock) { + synchronized (mBluetoothA2dpConfigStore) { if (mBluetoothA2dp != null) { setCodecConfigPreference(codecConfig); } @@ -106,7 +104,7 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends } BluetoothCodecConfig codecConfig; - synchronized (mBluetoothA2dpLock) { + synchronized (mBluetoothA2dpConfigStore) { codecConfig = getCodecConfig(); } @@ -168,7 +166,7 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends protected abstract String[] getListSummaries(); /** - * Updates the new value to the {@link BluetoothA2dpConfigStore}. + * Updates the new value to the {@link BluetoothA2dpConfigStore} and the {@link BluetoothA2dp}. * * @param newValue the new setting value */ @@ -197,18 +195,4 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends return mBluetoothA2dp.getCodecStatus().getCodecConfig(); } - - @VisibleForTesting - BluetoothCodecConfig createCodecConfig(int codecTypeValue, int codecPriorityValue, - int sampleRateValue, int bitsPerSampleValue, - int channelModeValue, long codecSpecific1Value, - long codecSpecific2Value, long codecSpecific3Value, - long codecSpecific4Value) { - return new BluetoothCodecConfig(codecTypeValue, codecPriorityValue, - sampleRateValue, bitsPerSampleValue, - channelModeValue, codecSpecific1Value, - codecSpecific2Value, codecSpecific3Value, - codecSpecific4Value); - } - } diff --git a/src/com/android/settings/development/BluetoothA2dpLock.java b/src/com/android/settings/development/BluetoothA2dpLock.java new file mode 100644 index 0000000000..70586658c3 --- /dev/null +++ b/src/com/android/settings/development/BluetoothA2dpLock.java @@ -0,0 +1,25 @@ +/* + * 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.BluetoothA2dp; + +/** + * Utility class to provide synchronization locks for {@link BluetoothA2dp} + */ +public class BluetoothA2dpLock { +} diff --git a/src/com/android/settings/development/BluetoothAudioBitsPerSamplePreferenceController.java b/src/com/android/settings/development/BluetoothAudioBitsPerSamplePreferenceController.java new file mode 100644 index 0000000000..f237ac1cfe --- /dev/null +++ b/src/com/android/settings/development/BluetoothAudioBitsPerSamplePreferenceController.java @@ -0,0 +1,102 @@ +/* + * 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; + } +} diff --git a/src/com/android/settings/development/BluetoothAudioChannelModePreferenceController.java b/src/com/android/settings/development/BluetoothAudioChannelModePreferenceController.java new file mode 100644 index 0000000000..a58c675516 --- /dev/null +++ b/src/com/android/settings/development/BluetoothAudioChannelModePreferenceController.java @@ -0,0 +1,96 @@ +/* + * 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; + } +} diff --git a/src/com/android/settings/development/BluetoothAudioCodecPreferenceController.java b/src/com/android/settings/development/BluetoothAudioCodecPreferenceController.java new file mode 100644 index 0000000000..2163a7092c --- /dev/null +++ b/src/com/android/settings/development/BluetoothAudioCodecPreferenceController.java @@ -0,0 +1,156 @@ +/* + * 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(); + } + } + return; + case 7: + synchronized (mBluetoothA2dpConfigStore) { + if (mBluetoothA2dp != null) { + mBluetoothA2dp.disableOptionalCodecs(); + } + } + 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; + } +} diff --git a/src/com/android/settings/development/BluetoothAudioQualityPreferenceController.java b/src/com/android/settings/development/BluetoothAudioQualityPreferenceController.java new file mode 100644 index 0000000000..7adf8e6b5a --- /dev/null +++ b/src/com/android/settings/development/BluetoothAudioQualityPreferenceController.java @@ -0,0 +1,100 @@ +/* + * 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 BluetoothAudioQualityPreferenceController extends + AbstractBluetoothA2dpPreferenceController { + + private static final int DEFAULT_INDEX = 3; + private static final String BLUETOOTH_SELECT_A2DP_LDAC_PLAYBACK_QUALITY_KEY = + "bluetooth_select_a2dp_ldac_playback_quality"; + + public BluetoothAudioQualityPreferenceController(Context context, Lifecycle lifecycle, + BluetoothA2dpConfigStore store) { + super(context, lifecycle, store); + } + + @Override + public String getPreferenceKey() { + return BLUETOOTH_SELECT_A2DP_LDAC_PLAYBACK_QUALITY_KEY; + } + + @Override + protected String[] getListValues() { + return mContext.getResources().getStringArray( + R.array.bluetooth_a2dp_codec_ldac_playback_quality_values); + } + + @Override + protected String[] getListSummaries() { + return mContext.getResources().getStringArray( + R.array.bluetooth_a2dp_codec_ldac_playback_quality_summaries); + } + + @Override + protected int getDefaultIndex() { + return DEFAULT_INDEX; + } + + @Override + protected void writeConfigurationValues(Object newValue) { + final int index = mPreference.findIndexOfValue(newValue.toString()); + int codecSpecific1Value = 0; // default + switch (index) { + case 0: + case 1: + case 2: + case 3: + codecSpecific1Value = 1000 + index; + break; + default: + break; + } + mBluetoothA2dpConfigStore.setCodecSpecific1Value(codecSpecific1Value); + } + + @Override + protected int getCurrentA2dpSettingIndex(BluetoothCodecConfig config) { + // The actual values are 0, 1, 2 - those are extracted + // as mod-10 remainders of a larger value. + // The reason is because within BluetoothCodecConfig we cannot use + // a codec-specific value of zero. + int index = (int) config.getCodecSpecific1(); + if (index > 0) { + index %= 10; + } else { + index = DEFAULT_INDEX; + } + switch (index) { + case 0: + case 1: + case 2: + case 3: + break; + default: + index = DEFAULT_INDEX; + break; + } + return index; + } +} diff --git a/src/com/android/settings/development/BluetoothAudioSampleRatePreferenceController.java b/src/com/android/settings/development/BluetoothAudioSampleRatePreferenceController.java index 5d84de8f94..35b449e6b2 100644 --- a/src/com/android/settings/development/BluetoothAudioSampleRatePreferenceController.java +++ b/src/com/android/settings/development/BluetoothAudioSampleRatePreferenceController.java @@ -18,8 +18,6 @@ package com.android.settings.development; import android.bluetooth.BluetoothCodecConfig; import android.content.Context; -import android.support.v7.preference.ListPreference; -import android.support.v7.preference.PreferenceScreen; import com.android.settings.R; import com.android.settingslib.core.lifecycle.Lifecycle; @@ -31,11 +29,9 @@ public class BluetoothAudioSampleRatePreferenceController extends private static final String BLUETOOTH_SELECT_A2DP_SAMPLE_RATE_KEY = "bluetooth_select_a2dp_sample_rate"; - private ListPreference mPreference; - public BluetoothAudioSampleRatePreferenceController(Context context, Lifecycle lifecycle, - Object bluetoothA2dpLock, BluetoothA2dpConfigStore store) { - super(context, lifecycle, bluetoothA2dpLock, store); + BluetoothA2dpConfigStore store) { + super(context, lifecycle, store); } @Override @@ -44,13 +40,6 @@ public class BluetoothAudioSampleRatePreferenceController extends } @Override - public void displayPreference(PreferenceScreen screen) { - super.displayPreference(screen); - - mPreference = (ListPreference) screen.findPreference(getPreferenceKey()); - } - - @Override protected String[] getListValues() { return mContext.getResources().getStringArray( R.array.bluetooth_a2dp_codec_sample_rate_values); diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java index e425fd2cea..c80416b323 100644 --- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java +++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java @@ -60,7 +60,8 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra private static final String TAG = "DevSettingsDashboard"; - private final Object mBluetoothA2dpLock = new Object(); + private final BluetoothA2dpConfigStore mBluetoothA2dpConfigStore = + new BluetoothA2dpConfigStore(); private boolean mIsAvailable = true; private SwitchBar mSwitchBar; @@ -104,7 +105,7 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra @Override public void onServiceConnected(int profile, BluetoothProfile proxy) { - synchronized (mBluetoothA2dpLock) { + synchronized (mBluetoothA2dpConfigStore) { mBluetoothA2dp = (BluetoothA2dp) proxy; } for (AbstractPreferenceController controller : mPreferenceControllers) { @@ -117,7 +118,7 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra @Override public void onServiceDisconnected(int profile) { - synchronized (mBluetoothA2dpLock) { + synchronized (mBluetoothA2dpConfigStore) { mBluetoothA2dp = null; } for (AbstractPreferenceController controller : mPreferenceControllers) { @@ -295,7 +296,7 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra @Override protected List<AbstractPreferenceController> getPreferenceControllers(Context context) { mPreferenceControllers = buildPreferenceControllers(context, getActivity(), getLifecycle(), - this /* devOptionsDashboardFragment */, mBluetoothA2dpLock, + this /* devOptionsDashboardFragment */, new BluetoothA2dpConfigStore()); return mPreferenceControllers; } @@ -349,7 +350,7 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra private static List<AbstractPreferenceController> buildPreferenceControllers(Context context, Activity activity, Lifecycle lifecycle, DevelopmentSettingsDashboardFragment fragment, - Object bluetoothA2dpLock, BluetoothA2dpConfigStore bluetoothA2dpConfigStore) { + BluetoothA2dpConfigStore bluetoothA2dpConfigStore) { final List<AbstractPreferenceController> controllers = new ArrayList<>(); controllers.add(new BugReportPreferenceControllerV2(context)); controllers.add(new LocalBackupPasswordPreferenceController(context)); @@ -391,13 +392,16 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra controllers.add(new BluetoothAbsoluteVolumePreferenceController(context)); controllers.add(new BluetoothInbandRingingPreferenceController(context)); controllers.add(new BluetoothAvrcpVersionPreferenceController(context)); - //controllers.add(new BluetoothAudioCodecPreferenceController(context, lifecycle, - // bluetoothA2dpLock, bluetoothA2dpConfigStore)); + controllers.add(new BluetoothAudioCodecPreferenceController(context, lifecycle, + bluetoothA2dpConfigStore)); controllers.add(new BluetoothAudioSampleRatePreferenceController(context, lifecycle, - bluetoothA2dpLock, bluetoothA2dpConfigStore)); - // bluetooth audio bits per sample - // bluetooth audio channel mode - // bluetooth audio ldac codec: playback quality + bluetoothA2dpConfigStore)); + controllers.add(new BluetoothAudioBitsPerSamplePreferenceController(context, lifecycle, + bluetoothA2dpConfigStore)); + controllers.add(new BluetoothAudioChannelModePreferenceController(context, lifecycle, + bluetoothA2dpConfigStore)); + controllers.add(new BluetoothAudioQualityPreferenceController(context, lifecycle, + bluetoothA2dpConfigStore)); controllers.add(new ShowTapsPreferenceController(context)); controllers.add(new PointerLocationPreferenceController(context)); controllers.add(new ShowSurfaceUpdatesPreferenceController(context)); @@ -463,7 +467,7 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra context) { return buildPreferenceControllers(context, null /* activity */, null /* lifecycle */, null /* devOptionsDashboardFragment */, - null /* bluetoothA2dpLock */, null /* bluetoothA2dpConfigStore */); + null /* bluetoothA2dpConfigStore */); } }; } |