Merge "Redirect user to original pairing page from pair dialog" into main

This commit is contained in:
Angela Wang
2023-09-05 07:08:16 +00:00
committed by Android (Google) Code Review
7 changed files with 72 additions and 25 deletions

View File

@@ -184,7 +184,8 @@ public class AccessibilityHearingAidPreferenceController extends BasePreferenceC
}
if (bluetoothProfile == BluetoothProfile.HEARING_AID) {
HearingAidUtils.launchHearingAidPairingDialog(mFragmentManager, activeDevice);
HearingAidUtils.launchHearingAidPairingDialog(
mFragmentManager, activeDevice, getMetricsCategory());
}
}

View File

@@ -103,7 +103,8 @@ public class AvailableHearingDevicePreferenceController extends
}
if (bluetoothProfile == BluetoothProfile.HEARING_AID) {
HearingAidUtils.launchHearingAidPairingDialog(mFragmentManager, activeDevice);
HearingAidUtils.launchHearingAidPairingDialog(mFragmentManager, activeDevice,
getMetricsCategory());
}
}
}

View File

@@ -38,9 +38,10 @@ public final class HearingAidUtils {
*
* @param fragmentManager The {@link FragmentManager} used to show dialog fragment
* @param device The {@link CachedBluetoothDevice} need to be hearing aid device
* @param launchPage The page id where the dialog is launched
*/
public static void launchHearingAidPairingDialog(FragmentManager fragmentManager,
@NonNull CachedBluetoothDevice device) {
@NonNull CachedBluetoothDevice device, int launchPage) {
// 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)) {
@@ -49,18 +50,18 @@ public final class HearingAidUtils {
if (device.isConnectedAshaHearingAidDevice()
&& device.getDeviceMode() == HearingAidInfo.DeviceMode.MODE_BINAURAL
&& device.getSubDevice() == null) {
launchHearingAidPairingDialogInternal(fragmentManager, device);
launchHearingAidPairingDialogInternal(fragmentManager, device, launchPage);
}
}
private static void launchHearingAidPairingDialogInternal(FragmentManager fragmentManager,
@NonNull CachedBluetoothDevice device) {
@NonNull CachedBluetoothDevice device, int launchPage) {
if (device.getDeviceSide() == HearingAidInfo.DeviceSide.SIDE_INVALID) {
Log.w(TAG, "Can not launch hearing aid pairing dialog for invalid side");
return;
}
HearingAidPairingDialogFragment.newInstance(device.getAddress()).show(fragmentManager,
HearingAidPairingDialogFragment.TAG);
HearingAidPairingDialogFragment.newInstance(device.getAddress(), launchPage)
.show(fragmentManager, HearingAidPairingDialogFragment.TAG);
}
private static boolean isCsipSupportedAndEnabled(@NonNull CachedBluetoothDevice device) {

View File

@@ -28,6 +28,7 @@ import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import com.android.settings.R;
import com.android.settings.accessibility.HearingDevicePairingDetail;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
@@ -41,6 +42,8 @@ public class HearingAidPairingDialogFragment extends InstrumentedDialogFragment
CachedBluetoothDevice.Callback {
public static final String TAG = "HearingAidPairingDialogFragment";
private static final String KEY_DEVICE_ADDRESS = "device_address";
private static final String KEY_LAUNCH_PAGE = "launch_page";
private LocalBluetoothManager mLocalBluetoothManager;
private CachedBluetoothDevice mDevice;
@@ -50,11 +53,17 @@ public class HearingAidPairingDialogFragment extends InstrumentedDialogFragment
*
* @param deviceAddress The remote Bluetooth device address, that needs to be a hearing aid
* device.
* @param launchPage The id of the page where this dialog launch from. Should be one of
* {@link SettingsEnums#ACCESSIBILITY},
* {@link SettingsEnums#ACCESSIBILITY_HEARING_AID_SETTINGS}, or
* {@link SettingsEnums#SETTINGS_CONNECTED_DEVICE_CATEGORY}
* @return a DialogFragment
*/
public static HearingAidPairingDialogFragment newInstance(String deviceAddress) {
public static HearingAidPairingDialogFragment newInstance(String deviceAddress,
int launchPage) {
Bundle args = new Bundle(1);
args.putString(KEY_DEVICE_ADDRESS, deviceAddress);
args.putInt(KEY_LAUNCH_PAGE, launchPage);
final HearingAidPairingDialogFragment fragment = new HearingAidPairingDialogFragment();
fragment.setArguments(args);
return fragment;
@@ -111,8 +120,14 @@ public class HearingAidPairingDialogFragment extends InstrumentedDialogFragment
}
private void positiveButtonListener() {
final int launchPage = getArguments().getInt(KEY_LAUNCH_PAGE);
final boolean launchFromA11y = (launchPage == SettingsEnums.ACCESSIBILITY)
|| (launchPage == SettingsEnums.ACCESSIBILITY_HEARING_AID_SETTINGS);
final String destination = launchFromA11y
? HearingDevicePairingDetail.class.getName()
: BluetoothPairingDetail.class.getName();
new SubSettingLauncher(getActivity())
.setDestination(BluetoothPairingDetail.class.getName())
.setDestination(destination)
.setSourceMetricsCategory(getMetricsCategory())
.launch();
}

View File

@@ -152,7 +152,8 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle
}
if (bluetoothProfile == BluetoothProfile.HEARING_AID) {
HearingAidUtils.launchHearingAidPairingDialog(mFragmentManager, activeDevice);
HearingAidUtils.launchHearingAidPairingDialog(mFragmentManager, activeDevice,
getMetricsCategory());
}
}