Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 87393645 authored by Angela Wang's avatar Angela Wang Committed by Android (Google) Code Review
Browse files

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

parents 4f4a1e30 175c73b3
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -184,7 +184,8 @@ public class AccessibilityHearingAidPreferenceController extends BasePreferenceC
        }

        if (bluetoothProfile == BluetoothProfile.HEARING_AID) {
            HearingAidUtils.launchHearingAidPairingDialog(mFragmentManager, activeDevice);
            HearingAidUtils.launchHearingAidPairingDialog(
                    mFragmentManager, activeDevice, getMetricsCategory());
        }
    }

+2 −1
Original line number Diff line number Diff line
@@ -103,7 +103,8 @@ public class AvailableHearingDevicePreferenceController extends
        }

        if (bluetoothProfile == BluetoothProfile.HEARING_AID) {
            HearingAidUtils.launchHearingAidPairingDialog(mFragmentManager, activeDevice);
            HearingAidUtils.launchHearingAidPairingDialog(mFragmentManager, activeDevice,
                    getMetricsCategory());
        }
    }
}
+6 −5
Original line number Diff line number Diff line
@@ -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) {
+17 −2
Original line number Diff line number Diff line
@@ -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();
    }
+2 −1
Original line number Diff line number Diff line
@@ -152,7 +152,8 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle
        }

        if (bluetoothProfile == BluetoothProfile.HEARING_AID) {
            HearingAidUtils.launchHearingAidPairingDialog(mFragmentManager, activeDevice);
            HearingAidUtils.launchHearingAidPairingDialog(mFragmentManager, activeDevice,
                    getMetricsCategory());
        }
    }

Loading