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

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

Merge "Prevent non-hearing device shown in hearing device dialog" into main

parents b5724dda f05bfb7e
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@ import com.android.systemui.accessibility.hearingaid.HearingDevicesListAdapter.H
import com.android.systemui.animation.DialogTransitionAnimator;
import com.android.systemui.bluetooth.qsdialog.ActiveHearingDeviceItemFactory;
import com.android.systemui.bluetooth.qsdialog.AvailableHearingDeviceItemFactory;
import com.android.systemui.bluetooth.qsdialog.ConnectedDeviceItemFactory;
import com.android.systemui.bluetooth.qsdialog.ConnectedHearingDeviceItemFactory;
import com.android.systemui.bluetooth.qsdialog.DeviceItem;
import com.android.systemui.bluetooth.qsdialog.DeviceItemFactory;
import com.android.systemui.bluetooth.qsdialog.DeviceItemType;
@@ -142,12 +142,7 @@ public class HearingDevicesDialogDelegate implements SystemUIDialog.Delegate,
    private final List<DeviceItemFactory> mHearingDeviceItemFactoryList = List.of(
            new ActiveHearingDeviceItemFactory(),
            new AvailableHearingDeviceItemFactory(),
            // TODO(b/331305850): setHearingAidInfo() for connected but not connect to profile
            // hearing device only called from
            // settings/bluetooth/DeviceListPreferenceFragment#handleLeScanResult, so we don't know
            // it is connected but not yet connect to profile hearing device in systemui.
            // Show all connected but not connect to profile bluetooth device for now.
            new ConnectedDeviceItemFactory(),
            new ConnectedHearingDeviceItemFactory(),
            new SavedHearingDeviceItemFactory()
    );

+15 −2
Original line number Diff line number Diff line
@@ -214,7 +214,7 @@ internal class AvailableHearingDeviceItemFactory : AvailableMediaDeviceItemFacto
    }
}

internal class ConnectedDeviceItemFactory : DeviceItemFactory() {
internal open class ConnectedDeviceItemFactory : DeviceItemFactory() {
    override fun isFilterMatched(
        context: Context,
        cachedDevice: CachedBluetoothDevice,
@@ -238,6 +238,19 @@ internal class ConnectedDeviceItemFactory : DeviceItemFactory() {
    }
}

internal class ConnectedHearingDeviceItemFactory : ConnectedDeviceItemFactory() {
    override fun isFilterMatched(
        context: Context,
        cachedDevice: CachedBluetoothDevice,
        isOngoingCall: Boolean,
        audioSharingAvailable: Boolean,
    ): Boolean {
        return cachedDevice.isHearingDevice &&
            cachedDevice.bondState == BluetoothDevice.BOND_BONDED &&
            cachedDevice.device.isConnected
    }
}

internal open class SavedDeviceItemFactory : DeviceItemFactory() {
    override fun isFilterMatched(
        context: Context,
@@ -274,7 +287,7 @@ internal class SavedHearingDeviceItemFactory : SavedDeviceItemFactory() {
            context,
            cachedDevice.getDevice(),
        ) &&
            cachedDevice.isHearingAidDevice &&
            cachedDevice.isHearingDevice &&
            cachedDevice.bondState == BluetoothDevice.BOND_BONDED &&
            !cachedDevice.isConnected
    }