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)); + } }