diff --git a/res/layout/bluetooth_audio_codec_dialog.xml b/res/layout/bluetooth_audio_codec_dialog.xml
index 96364270558..1fd9de80219 100644
--- a/res/layout/bluetooth_audio_codec_dialog.xml
+++ b/res/layout/bluetooth_audio_codec_dialog.xml
@@ -51,9 +51,17 @@
android:id="@+id/bluetooth_audio_codec_aptx_hd"
layout="@layout/preference_widget_dialog_radiobutton"/>
+
+
+
+
RAM
+
+ Saved Earbuds
diff --git a/res/xml/connected_devices.xml b/res/xml/connected_devices.xml
index 8e606484b7a..2ac73aef497 100644
--- a/res/xml/connected_devices.xml
+++ b/res/xml/connected_devices.xml
@@ -36,6 +36,11 @@
android:title="@string/connected_device_other_device_title"
settings:controller="com.android.settings.connecteddevice.ConnectedDeviceGroupController"/>
+
+
getIndexFromConfig(BluetoothCodecConfig[] configs) {
List indexArray = new ArrayList<>();
for (int i = 0; i < configs.length; i++) {
@@ -171,9 +185,15 @@ int convertCfgToBtnIndex(int config) {
case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD:
index = 4;
break;
+ case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_ADAPTIVE:
+ index = 6;
+ break;
case BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC:
index = 5;
break;
+ case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_TWSP:
+ index = 7;
+ break;
default:
Log.e(TAG, "Unsupported config:" + config);
break;
diff --git a/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceController.java b/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceController.java
index d4ca4e57952..6481c759f7a 100644
--- a/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceController.java
+++ b/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceController.java
@@ -81,6 +81,7 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
return true;
}
final boolean enabled = (Boolean) newValue;
+ Log.e(TAG, "onPreferenceChange: " + enabled);
final int prefValue = enabled
? BluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED
: BluetoothA2dp.OPTIONAL_CODECS_PREF_DISABLED;
diff --git a/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceController.java b/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceController.java
index 4b38e119778..f4d685733b4 100644
--- a/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceController.java
+++ b/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceController.java
@@ -105,7 +105,8 @@ public void updateState(Preference preference) {
@Override
public void onHDAudioEnabled(boolean enabled) {
- mPreference.setEnabled(false);
+ Log.d(TAG, "onHDAudioEnabled: " + enabled);
+ mPreference.setEnabled(enabled);
}
@VisibleForTesting
diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java
index 7dd29069416..0f01e00a3f4 100644
--- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java
@@ -19,6 +19,7 @@
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -108,6 +109,8 @@ public void writeConfigurationValues_selectDefault_setHighest() {
BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null, mCodecConfigs);
when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
+ when(mBluetoothA2dp.isOptionalCodecsEnabled(mActiveDevice)).thenReturn(
+ BluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
mController.writeConfigurationValues(0);
@@ -172,4 +175,37 @@ public void onIndexUpdated_notifyPreference() {
verify(mCallback).onBluetoothCodecChanged();
}
+
+ @Test
+ public void onHDAudioEnabled_optionalCodecEnabled_setsCodecTypeAsAAC() {
+ BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
+ mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC,
+ /* codecsLocalCapabilities= */ null,
+ mCodecConfigs);
+ when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
+ when(mBluetoothA2dp.isOptionalCodecsEnabled(mActiveDevice)).thenReturn(
+ BluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED);
+ mController.onBluetoothServiceConnected(mBluetoothA2dp);
+
+ mController.onHDAudioEnabled(/* enabled= */ true);
+
+ verify(mBluetoothA2dpConfigStore, atLeastOnce()).setCodecType(
+ eq(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC));
+ }
+ @Test
+ public void onHDAudioEnabled_optionalCodecDisabled_setsCodecTypeAsSBC() {
+ BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
+ mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC,
+ /* codecsLocalCapabilities= */ null,
+ mCodecConfigs);
+ when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
+ when(mBluetoothA2dp.isOptionalCodecsEnabled(mActiveDevice)).thenReturn(
+ BluetoothA2dp.OPTIONAL_CODECS_PREF_DISABLED);
+ mController.onBluetoothServiceConnected(mBluetoothA2dp);
+
+ mController.onHDAudioEnabled(/* enabled= */ false);
+
+ verify(mBluetoothA2dpConfigStore, atLeastOnce()).setCodecType(
+ eq(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC));
+ }
}