Merge "Shouldn't show pair another ear dialog if hearing aid supports CSIP" into udc-qpr-dev am: d91da4f4ca
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/23412076 Change-Id: I3e99952c7148cffd16d87487733fcc12731a3211 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -23,6 +23,7 @@ import androidx.fragment.app.FragmentManager;
|
|||||||
|
|
||||||
import com.android.settings.bluetooth.HearingAidPairingDialogFragment;
|
import com.android.settings.bluetooth.HearingAidPairingDialogFragment;
|
||||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||||
|
import com.android.settingslib.bluetooth.CsipSetCoordinatorProfile;
|
||||||
import com.android.settingslib.bluetooth.HearingAidInfo;
|
import com.android.settingslib.bluetooth.HearingAidInfo;
|
||||||
|
|
||||||
/** Provides utility methods related hearing aids. */
|
/** Provides utility methods related hearing aids. */
|
||||||
@@ -40,6 +41,11 @@ public final class HearingAidUtils {
|
|||||||
*/
|
*/
|
||||||
public static void launchHearingAidPairingDialog(FragmentManager fragmentManager,
|
public static void launchHearingAidPairingDialog(FragmentManager fragmentManager,
|
||||||
@NonNull CachedBluetoothDevice device) {
|
@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()
|
if (device.isConnectedAshaHearingAidDevice()
|
||||||
&& device.getDeviceMode() == HearingAidInfo.DeviceMode.MODE_BINAURAL
|
&& device.getDeviceMode() == HearingAidInfo.DeviceMode.MODE_BINAURAL
|
||||||
&& device.getSubDevice() == null) {
|
&& device.getSubDevice() == null) {
|
||||||
@@ -56,4 +62,10 @@ public final class HearingAidUtils {
|
|||||||
HearingAidPairingDialogFragment.newInstance(device.getAddress()).show(fragmentManager,
|
HearingAidPairingDialogFragment.newInstance(device.getAddress()).show(fragmentManager,
|
||||||
HearingAidPairingDialogFragment.TAG);
|
HearingAidPairingDialogFragment.TAG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isCsipSupportedAndEnabled(@NonNull CachedBluetoothDevice device) {
|
||||||
|
return device.getProfiles().stream().anyMatch(
|
||||||
|
profile -> (profile instanceof CsipSetCoordinatorProfile)
|
||||||
|
&& (profile.isEnabled(device.getDevice())));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -37,8 +37,10 @@ import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
|
|||||||
import com.android.settings.utils.ActivityControllerWrapper;
|
import com.android.settings.utils.ActivityControllerWrapper;
|
||||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||||
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
||||||
|
import com.android.settingslib.bluetooth.CsipSetCoordinatorProfile;
|
||||||
import com.android.settingslib.bluetooth.HearingAidInfo;
|
import com.android.settingslib.bluetooth.HearingAidInfo;
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
||||||
|
import com.android.settingslib.bluetooth.LocalBluetoothProfile;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
@@ -52,6 +54,9 @@ import org.robolectric.RobolectricTestRunner;
|
|||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
import org.robolectric.shadow.api.Shadow;
|
import org.robolectric.shadow.api.Shadow;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/** Tests for {@link HearingAidUtils}. */
|
/** Tests for {@link HearingAidUtils}. */
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@Config(shadows = {ShadowAlertDialogCompat.class, ShadowBluetoothAdapter.class,
|
@Config(shadows = {ShadowAlertDialogCompat.class, ShadowBluetoothAdapter.class,
|
||||||
@@ -72,6 +77,8 @@ public class HearingAidUtilsTest {
|
|||||||
private LocalBluetoothManager mLocalBluetoothManager;
|
private LocalBluetoothManager mLocalBluetoothManager;
|
||||||
@Mock
|
@Mock
|
||||||
private CachedBluetoothDeviceManager mCachedDeviceManager;
|
private CachedBluetoothDeviceManager mCachedDeviceManager;
|
||||||
|
@Mock
|
||||||
|
private CsipSetCoordinatorProfile mCsipSetCoordinatorProfile;
|
||||||
private BluetoothDevice mBluetoothDevice;
|
private BluetoothDevice mBluetoothDevice;
|
||||||
private BluetoothAdapter mBluetoothAdapter;
|
private BluetoothAdapter mBluetoothAdapter;
|
||||||
private ShadowBluetoothAdapter mShadowBluetoothAdapter;
|
private ShadowBluetoothAdapter mShadowBluetoothAdapter;
|
||||||
@@ -136,6 +143,38 @@ public class HearingAidUtilsTest {
|
|||||||
assertThat(dialog).isNull();
|
assertThat(dialog).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void launchHearingAidPairingDialog_deviceSupportsCsip_csipEnabled_noDialog() {
|
||||||
|
when(mCachedBluetoothDevice.isConnectedAshaHearingAidDevice()).thenReturn(true);
|
||||||
|
when(mCachedBluetoothDevice.getDeviceMode()).thenReturn(
|
||||||
|
HearingAidInfo.DeviceMode.MODE_BINAURAL);
|
||||||
|
when(mCachedBluetoothDevice.getDeviceSide()).thenReturn(
|
||||||
|
HearingAidInfo.DeviceSide.SIDE_LEFT);
|
||||||
|
makeDeviceSupportCsip();
|
||||||
|
makeDeviceEnableCsip(true);
|
||||||
|
|
||||||
|
HearingAidUtils.launchHearingAidPairingDialog(mFragmentManager, mCachedBluetoothDevice);
|
||||||
|
|
||||||
|
final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
|
assertThat(dialog).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void launchHearingAidPairingDialog_deviceSupportsCsip_csipDisabled_dialogShown() {
|
||||||
|
when(mCachedBluetoothDevice.isConnectedAshaHearingAidDevice()).thenReturn(true);
|
||||||
|
when(mCachedBluetoothDevice.getDeviceMode()).thenReturn(
|
||||||
|
HearingAidInfo.DeviceMode.MODE_BINAURAL);
|
||||||
|
when(mCachedBluetoothDevice.getDeviceSide()).thenReturn(
|
||||||
|
HearingAidInfo.DeviceSide.SIDE_LEFT);
|
||||||
|
makeDeviceSupportCsip();
|
||||||
|
makeDeviceEnableCsip(false);
|
||||||
|
|
||||||
|
HearingAidUtils.launchHearingAidPairingDialog(mFragmentManager, mCachedBluetoothDevice);
|
||||||
|
|
||||||
|
final AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
|
assertThat(dialog.isShowing()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void launchHearingAidPairingDialog_dialogShown() {
|
public void launchHearingAidPairingDialog_dialogShown() {
|
||||||
when(mCachedBluetoothDevice.isConnectedAshaHearingAidDevice()).thenReturn(true);
|
when(mCachedBluetoothDevice.isConnectedAshaHearingAidDevice()).thenReturn(true);
|
||||||
@@ -150,6 +189,17 @@ public class HearingAidUtilsTest {
|
|||||||
assertThat(dialog.isShowing()).isTrue();
|
assertThat(dialog.isShowing()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void makeDeviceSupportCsip() {
|
||||||
|
List<LocalBluetoothProfile> uuids = new ArrayList<>();
|
||||||
|
uuids.add(mCsipSetCoordinatorProfile);
|
||||||
|
when(mCachedBluetoothDevice.getProfiles()).thenReturn(uuids);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void makeDeviceEnableCsip(boolean enabled) {
|
||||||
|
when(mCsipSetCoordinatorProfile.isEnabled(mCachedBluetoothDevice.getDevice()))
|
||||||
|
.thenReturn(enabled);
|
||||||
|
}
|
||||||
|
|
||||||
private void setupEnvironment() {
|
private void setupEnvironment() {
|
||||||
ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
|
ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
|
||||||
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
|
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
|
||||||
|
Reference in New Issue
Block a user