Merge "Disable the Bt categorization list when audio type is known" into main

This commit is contained in:
Vlad Popa
2023-12-05 03:33:36 +00:00
committed by Android (Google) Code Review
2 changed files with 39 additions and 10 deletions

View File

@@ -23,6 +23,7 @@ import static android.media.AudioManager.AUDIO_DEVICE_CATEGORY_HEARING_AID;
import static android.media.AudioManager.AUDIO_DEVICE_CATEGORY_OTHER;
import static android.media.AudioManager.AUDIO_DEVICE_CATEGORY_SPEAKER;
import static android.media.AudioManager.AUDIO_DEVICE_CATEGORY_UNKNOWN;
import static android.media.audio.Flags.automaticBtDeviceType;
import android.content.Context;
import android.media.AudioManager;
@@ -106,9 +107,15 @@ public class BluetoothDetailsAudioDeviceTypeController extends BluetoothDetailsC
final int index = pref.findIndexOfValue(value);
if (index >= 0) {
pref.setSummary(pref.getEntries()[index]);
mAudioManager.setBluetoothAudioDeviceCategory(mCachedDevice.getAddress(),
mCachedDevice.getDevice().getType() == DEVICE_TYPE_LE,
Integer.parseInt(value));
if (automaticBtDeviceType()) {
mAudioManager.setBluetoothAudioDeviceCategory(
mCachedDevice.getAddress(), Integer.parseInt(value));
} else {
mAudioManager.setBluetoothAudioDeviceCategory_legacy(
mCachedDevice.getAddress(),
mCachedDevice.getDevice().getType() == DEVICE_TYPE_LE,
Integer.parseInt(value));
}
mCachedDevice.onAudioDeviceCategoryChanged();
}
}
@@ -163,9 +170,15 @@ public class BluetoothDetailsAudioDeviceTypeController extends BluetoothDetailsC
Integer.toString(AUDIO_DEVICE_CATEGORY_OTHER),
});
@AudioDeviceCategory final int deviceCategory =
mAudioManager.getBluetoothAudioDeviceCategory(mCachedDevice.getAddress(),
mCachedDevice.getDevice().getType() == DEVICE_TYPE_LE);
@AudioDeviceCategory int deviceCategory;
if (automaticBtDeviceType()) {
deviceCategory = mAudioManager.getBluetoothAudioDeviceCategory(
mCachedDevice.getAddress());
} else {
deviceCategory = mAudioManager.getBluetoothAudioDeviceCategory_legacy(
mCachedDevice.getAddress(),
mCachedDevice.getDevice().getType() == DEVICE_TYPE_LE);
}
if (DEBUG) {
Log.v(TAG, "getBluetoothAudioDeviceCategory() device: "
+ mCachedDevice.getDevice().getAnonymizedAddress()
@@ -173,6 +186,12 @@ public class BluetoothDetailsAudioDeviceTypeController extends BluetoothDetailsC
}
mAudioDeviceTypePreference.setValue(Integer.toString(deviceCategory));
if (automaticBtDeviceType()) {
if (mAudioManager.isBluetoothAudioDeviceCategoryFixed(mCachedDevice.getAddress())) {
mAudioDeviceTypePreference.setEnabled(false);
}
}
mAudioDeviceTypePreference.setSummary(mAudioDeviceTypePreference.getEntry());
mAudioDeviceTypePreference.setOnPreferenceChangeListener(this);
}

View File

@@ -18,6 +18,7 @@ package com.android.settings.bluetooth;
import static android.bluetooth.BluetoothDevice.DEVICE_TYPE_LE;
import static android.media.AudioManager.AUDIO_DEVICE_CATEGORY_SPEAKER;
import static android.media.audio.Flags.automaticBtDeviceType;
import static com.google.common.truth.Truth.assertThat;
@@ -97,8 +98,12 @@ public class BluetoothDetailsAudioDeviceTypeControllerTest extends
@Test
public void createAudioDeviceTypePreference_btDeviceIsCategorized_checkSelection() {
int deviceType = AUDIO_DEVICE_CATEGORY_SPEAKER;
when(mAudioManager.getBluetoothAudioDeviceCategory(MAC_ADDRESS, /*isBle=*/true)).thenReturn(
deviceType);
if (automaticBtDeviceType()) {
when(mAudioManager.getBluetoothAudioDeviceCategory(MAC_ADDRESS)).thenReturn(deviceType);
} else {
when(mAudioManager.getBluetoothAudioDeviceCategory_legacy(MAC_ADDRESS, /*isBle=*/
true)).thenReturn(deviceType);
}
mController.createAudioDeviceTypePreference(mContext);
mAudioDeviceTypePref = mController.getAudioDeviceTypePreference();
@@ -113,7 +118,12 @@ public class BluetoothDetailsAudioDeviceTypeControllerTest extends
mController.onPreferenceChange(mAudioDeviceTypePref, Integer.toString(deviceType));
verify(mAudioManager).setBluetoothAudioDeviceCategory(eq(MAC_ADDRESS), eq(true),
eq(AUDIO_DEVICE_CATEGORY_SPEAKER));
if (automaticBtDeviceType()) {
verify(mAudioManager).setBluetoothAudioDeviceCategory(eq(MAC_ADDRESS),
eq(AUDIO_DEVICE_CATEGORY_SPEAKER));
} else {
verify(mAudioManager).setBluetoothAudioDeviceCategory_legacy(eq(MAC_ADDRESS), eq(true),
eq(AUDIO_DEVICE_CATEGORY_SPEAKER));
}
}
}