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.
|
* Helper to get the list of connectable and special profiles.
|
||||||
*/
|
*/
|
||||||
private List<LocalBluetoothProfile> getProfiles() {
|
private List<LocalBluetoothProfile> getProfiles() {
|
||||||
List<LocalBluetoothProfile> result = new ArrayList<LocalBluetoothProfile>();
|
List<LocalBluetoothProfile> result = new ArrayList<>();
|
||||||
mProfileDeviceMap.clear();
|
mProfileDeviceMap.clear();
|
||||||
if (mAllOfCachedDevices == null || mAllOfCachedDevices.isEmpty()) {
|
if (mAllOfCachedDevices == null || mAllOfCachedDevices.isEmpty()) {
|
||||||
return result;
|
return result;
|
||||||
@@ -319,8 +319,7 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll
|
|||||||
if (mProfileDeviceMap.containsKey(profile.toString())) {
|
if (mProfileDeviceMap.containsKey(profile.toString())) {
|
||||||
mProfileDeviceMap.get(profile.toString()).add(cachedItem);
|
mProfileDeviceMap.get(profile.toString()).add(cachedItem);
|
||||||
} else {
|
} else {
|
||||||
List<CachedBluetoothDevice> tmpCachedDeviceList =
|
List<CachedBluetoothDevice> tmpCachedDeviceList = new ArrayList<>();
|
||||||
new ArrayList<CachedBluetoothDevice>();
|
|
||||||
tmpCachedDeviceList.add(cachedItem);
|
tmpCachedDeviceList.add(cachedItem);
|
||||||
mProfileDeviceMap.put(profile.toString(), tmpCachedDeviceList);
|
mProfileDeviceMap.put(profile.toString(), tmpCachedDeviceList);
|
||||||
result.add(profile);
|
result.add(profile);
|
||||||
@@ -356,6 +355,10 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll
|
|||||||
}
|
}
|
||||||
boolean hearingAidSupported = result.contains(
|
boolean hearingAidSupported = result.contains(
|
||||||
mManager.getProfileManager().getHearingAidProfile());
|
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) {
|
if (leAudioSupported && !classicAudioSupported && !hearingAidSupported) {
|
||||||
mIsLeAudioOnlyDevice = true;
|
mIsLeAudioOnlyDevice = true;
|
||||||
}
|
}
|
||||||
|
@@ -44,6 +44,7 @@ import com.android.settings.testutils.shadow.ShadowBluetoothDevice;
|
|||||||
import com.android.settingslib.R;
|
import com.android.settingslib.R;
|
||||||
import com.android.settingslib.bluetooth.A2dpProfile;
|
import com.android.settingslib.bluetooth.A2dpProfile;
|
||||||
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
||||||
|
import com.android.settingslib.bluetooth.HearingAidProfile;
|
||||||
import com.android.settingslib.bluetooth.LeAudioProfile;
|
import com.android.settingslib.bluetooth.LeAudioProfile;
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothProfile;
|
import com.android.settingslib.bluetooth.LocalBluetoothProfile;
|
||||||
@@ -90,8 +91,12 @@ public class BluetoothDetailsProfilesControllerTest extends BluetoothDetailsCont
|
|||||||
@Mock
|
@Mock
|
||||||
private CachedBluetoothDeviceManager mCachedBluetoothDeviceManager;
|
private CachedBluetoothDeviceManager mCachedBluetoothDeviceManager;
|
||||||
|
|
||||||
private @Mock A2dpProfile mA2dpProfile;
|
@Mock
|
||||||
private @Mock LeAudioProfile mLeAudioProfile;
|
private A2dpProfile mA2dpProfile;
|
||||||
|
@Mock
|
||||||
|
private LeAudioProfile mLeAudioProfile;
|
||||||
|
@Mock
|
||||||
|
private HearingAidProfile mHearingAidProfile;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
@@ -399,18 +404,23 @@ public class BluetoothDetailsProfilesControllerTest extends BluetoothDetailsCont
|
|||||||
when(mProfileManager.getProfileByName(eq(mA2dpProfile.toString())))
|
when(mProfileManager.getProfileByName(eq(mA2dpProfile.toString())))
|
||||||
.thenReturn(mA2dpProfile);
|
.thenReturn(mA2dpProfile);
|
||||||
when(mA2dpProfile.getNameResource(any()))
|
when(mA2dpProfile.getNameResource(any()))
|
||||||
.thenReturn(com.android.settingslib.R.string.bluetooth_profile_a2dp);
|
.thenReturn(R.string.bluetooth_profile_a2dp);
|
||||||
when(mA2dpProfile.getHighQualityAudioOptionLabel(any())).thenReturn(
|
when(mA2dpProfile.getHighQualityAudioOptionLabel(any())).thenReturn(
|
||||||
mContext.getString(com.android.settingslib.R
|
mContext.getString(R.string.bluetooth_profile_a2dp_high_quality_unknown_codec));
|
||||||
.string.bluetooth_profile_a2dp_high_quality_unknown_codec));
|
|
||||||
when(mA2dpProfile.isProfileReady()).thenReturn(true);
|
when(mA2dpProfile.isProfileReady()).thenReturn(true);
|
||||||
when(mProfileManager.getA2dpProfile()).thenReturn(mA2dpProfile);
|
when(mProfileManager.getA2dpProfile()).thenReturn(mA2dpProfile);
|
||||||
|
|
||||||
when(mLeAudioProfile.toString()).thenReturn("LE_AUDIO");
|
when(mLeAudioProfile.toString()).thenReturn("LE_AUDIO");
|
||||||
when(mLeAudioProfile.getNameResource(any()))
|
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(mLeAudioProfile.isProfileReady()).thenReturn(true);
|
||||||
when(mProfileManager.getLeAudioProfile()).thenReturn(mLeAudioProfile);
|
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,
|
private void addA2dpProfileToDevice(boolean preferred, boolean supportsHighQualityAudio,
|
||||||
@@ -426,6 +436,11 @@ public class BluetoothDetailsProfilesControllerTest extends BluetoothDetailsCont
|
|||||||
mConnectableProfiles.add(mLeAudioProfile);
|
mConnectableProfiles.add(mLeAudioProfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addHearingAidProfileToDevice(boolean enabled) {
|
||||||
|
when(mHearingAidProfile.isEnabled(any())).thenReturn(enabled);
|
||||||
|
mConnectableProfiles.add(mHearingAidProfile);
|
||||||
|
}
|
||||||
|
|
||||||
private SwitchPreferenceCompat getHighQualityAudioPref() {
|
private SwitchPreferenceCompat getHighQualityAudioPref() {
|
||||||
return (SwitchPreferenceCompat) mScreen.findPreference(
|
return (SwitchPreferenceCompat) mScreen.findPreference(
|
||||||
BluetoothDetailsProfilesController.HIGH_QUALITY_AUDIO_PREF_TAG);
|
BluetoothDetailsProfilesController.HIGH_QUALITY_AUDIO_PREF_TAG);
|
||||||
@@ -591,4 +606,27 @@ public class BluetoothDetailsProfilesControllerTest extends BluetoothDetailsCont
|
|||||||
List<SwitchPreferenceCompat> switches = getProfileSwitches(false);
|
List<SwitchPreferenceCompat> switches = getProfileSwitches(false);
|
||||||
assertThat(switches.get(0).isVisible()).isFalse();
|
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