Merge "Fix LE Audio toggle missing issue for dual mode hearing device" into main
This commit is contained in:
@@ -308,7 +308,7 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll
|
||||
* Helper to get the list of connectable and special profiles.
|
||||
*/
|
||||
private List<LocalBluetoothProfile> getProfiles() {
|
||||
List<LocalBluetoothProfile> result = new ArrayList<LocalBluetoothProfile>();
|
||||
List<LocalBluetoothProfile> result = new ArrayList<>();
|
||||
mProfileDeviceMap.clear();
|
||||
if (mAllOfCachedDevices == null || mAllOfCachedDevices.isEmpty()) {
|
||||
return result;
|
||||
@@ -319,8 +319,7 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll
|
||||
if (mProfileDeviceMap.containsKey(profile.toString())) {
|
||||
mProfileDeviceMap.get(profile.toString()).add(cachedItem);
|
||||
} else {
|
||||
List<CachedBluetoothDevice> tmpCachedDeviceList =
|
||||
new ArrayList<CachedBluetoothDevice>();
|
||||
List<CachedBluetoothDevice> tmpCachedDeviceList = new ArrayList<>();
|
||||
tmpCachedDeviceList.add(cachedItem);
|
||||
mProfileDeviceMap.put(profile.toString(), tmpCachedDeviceList);
|
||||
result.add(profile);
|
||||
@@ -356,6 +355,10 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll
|
||||
}
|
||||
boolean hearingAidSupported = result.contains(
|
||||
mManager.getProfileManager().getHearingAidProfile());
|
||||
// Remove hearing aids toggle anyway since showing the toggle will confuse users
|
||||
if (hearingAidSupported) {
|
||||
result.remove(mManager.getProfileManager().getHearingAidProfile());
|
||||
}
|
||||
if (leAudioSupported && !classicAudioSupported && !hearingAidSupported) {
|
||||
mIsLeAudioOnlyDevice = true;
|
||||
}
|
||||
|
@@ -44,6 +44,7 @@ import com.android.settings.testutils.shadow.ShadowBluetoothDevice;
|
||||
import com.android.settingslib.R;
|
||||
import com.android.settingslib.bluetooth.A2dpProfile;
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
||||
import com.android.settingslib.bluetooth.HearingAidProfile;
|
||||
import com.android.settingslib.bluetooth.LeAudioProfile;
|
||||
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
||||
import com.android.settingslib.bluetooth.LocalBluetoothProfile;
|
||||
@@ -90,8 +91,12 @@ public class BluetoothDetailsProfilesControllerTest extends BluetoothDetailsCont
|
||||
@Mock
|
||||
private CachedBluetoothDeviceManager mCachedBluetoothDeviceManager;
|
||||
|
||||
private @Mock A2dpProfile mA2dpProfile;
|
||||
private @Mock LeAudioProfile mLeAudioProfile;
|
||||
@Mock
|
||||
private A2dpProfile mA2dpProfile;
|
||||
@Mock
|
||||
private LeAudioProfile mLeAudioProfile;
|
||||
@Mock
|
||||
private HearingAidProfile mHearingAidProfile;
|
||||
|
||||
@Override
|
||||
public void setUp() {
|
||||
@@ -399,18 +404,23 @@ public class BluetoothDetailsProfilesControllerTest extends BluetoothDetailsCont
|
||||
when(mProfileManager.getProfileByName(eq(mA2dpProfile.toString())))
|
||||
.thenReturn(mA2dpProfile);
|
||||
when(mA2dpProfile.getNameResource(any()))
|
||||
.thenReturn(com.android.settingslib.R.string.bluetooth_profile_a2dp);
|
||||
.thenReturn(R.string.bluetooth_profile_a2dp);
|
||||
when(mA2dpProfile.getHighQualityAudioOptionLabel(any())).thenReturn(
|
||||
mContext.getString(com.android.settingslib.R
|
||||
.string.bluetooth_profile_a2dp_high_quality_unknown_codec));
|
||||
mContext.getString(R.string.bluetooth_profile_a2dp_high_quality_unknown_codec));
|
||||
when(mA2dpProfile.isProfileReady()).thenReturn(true);
|
||||
when(mProfileManager.getA2dpProfile()).thenReturn(mA2dpProfile);
|
||||
|
||||
when(mLeAudioProfile.toString()).thenReturn("LE_AUDIO");
|
||||
when(mLeAudioProfile.getNameResource(any()))
|
||||
.thenReturn(com.android.settingslib.R.string.bluetooth_profile_le_audio);
|
||||
.thenReturn(R.string.bluetooth_profile_le_audio);
|
||||
when(mLeAudioProfile.isProfileReady()).thenReturn(true);
|
||||
when(mProfileManager.getLeAudioProfile()).thenReturn(mLeAudioProfile);
|
||||
|
||||
when(mHearingAidProfile.toString()).thenReturn("HearingAid");
|
||||
when(mHearingAidProfile.getNameResource(any()))
|
||||
.thenReturn(R.string.bluetooth_profile_hearing_aid);
|
||||
when(mHearingAidProfile.isProfileReady()).thenReturn(true);
|
||||
when(mProfileManager.getHearingAidProfile()).thenReturn(mHearingAidProfile);
|
||||
}
|
||||
|
||||
private void addA2dpProfileToDevice(boolean preferred, boolean supportsHighQualityAudio,
|
||||
@@ -426,6 +436,11 @@ public class BluetoothDetailsProfilesControllerTest extends BluetoothDetailsCont
|
||||
mConnectableProfiles.add(mLeAudioProfile);
|
||||
}
|
||||
|
||||
private void addHearingAidProfileToDevice(boolean enabled) {
|
||||
when(mHearingAidProfile.isEnabled(any())).thenReturn(enabled);
|
||||
mConnectableProfiles.add(mHearingAidProfile);
|
||||
}
|
||||
|
||||
private SwitchPreferenceCompat getHighQualityAudioPref() {
|
||||
return (SwitchPreferenceCompat) mScreen.findPreference(
|
||||
BluetoothDetailsProfilesController.HIGH_QUALITY_AUDIO_PREF_TAG);
|
||||
@@ -591,4 +606,27 @@ public class BluetoothDetailsProfilesControllerTest extends BluetoothDetailsCont
|
||||
List<SwitchPreferenceCompat> switches = getProfileSwitches(false);
|
||||
assertThat(switches.get(0).isVisible()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ashaHearingAid_hideAshaToggle() {
|
||||
setupDevice(makeDefaultDeviceConfig());
|
||||
addHearingAidProfileToDevice(true);
|
||||
|
||||
showScreen(mController);
|
||||
|
||||
List<SwitchPreferenceCompat> switches = getProfileSwitches(false);
|
||||
assertThat(switches.isEmpty()).isTrue();
|
||||
}
|
||||
@Test
|
||||
public void ashaHearingAidWithLeAudio_showLeAudioToggle() {
|
||||
setupDevice(makeDefaultDeviceConfig());
|
||||
addHearingAidProfileToDevice(false);
|
||||
addLeAudioProfileToDevice(true);
|
||||
|
||||
showScreen(mController);
|
||||
|
||||
List<SwitchPreferenceCompat> switches = getProfileSwitches(false);
|
||||
assertThat(switches.getFirst().getTitle()).isEqualTo(
|
||||
mContext.getString(mLeAudioProfile.getNameResource(mDevice)));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user