Shouldn't show pair another ear dialog if hearing aid supports CSIP

Some devices may supports both ASHA and CSIP. If the device supports
CSIP, it'll automatically pair the other ear and thus no need to pop up
the pair another ear dialog which is specially for ASHA device.

Bug: 283269736
Test: make RunSettingsRoboTests ROBOTEST_FILTER=HearingAidUtilsTest
Change-Id: I9a8e3876e2905b18b1c63e74f47c6877504ebdc8
This commit is contained in:
Angela Wang
2023-05-24 13:26:39 +00:00
parent b04b977cac
commit 1bc59caf13
2 changed files with 62 additions and 0 deletions

View File

@@ -23,6 +23,7 @@ import androidx.fragment.app.FragmentManager;
import com.android.settings.bluetooth.HearingAidPairingDialogFragment;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.CsipSetCoordinatorProfile;
import com.android.settingslib.bluetooth.HearingAidInfo;
/** Provides utility methods related hearing aids. */
@@ -40,6 +41,11 @@ public final class HearingAidUtils {
*/
public static void launchHearingAidPairingDialog(FragmentManager fragmentManager,
@NonNull CachedBluetoothDevice device) {
// No need to show the pair another ear dialog if the device supports and enables CSIP.
// CSIP will pair other devices in the same set automatically.
if (isCsipSupportedAndEnabled(device)) {
return;
}
if (device.isConnectedAshaHearingAidDevice()
&& device.getDeviceMode() == HearingAidInfo.DeviceMode.MODE_BINAURAL
&& device.getSubDevice() == null) {
@@ -56,4 +62,10 @@ public final class HearingAidUtils {
HearingAidPairingDialogFragment.newInstance(device.getAddress()).show(fragmentManager,
HearingAidPairingDialogFragment.TAG);
}
private static boolean isCsipSupportedAndEnabled(@NonNull CachedBluetoothDevice device) {
return device.getProfiles().stream().anyMatch(
profile -> (profile instanceof CsipSetCoordinatorProfile)
&& (profile.isEnabled(device.getDevice())));
}
}