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

Commit f61d6ecb authored by chelseahao's avatar chelseahao Committed by Chelsea Hao
Browse files

Make talkback to announce "double-tap to disconnect" for active devices.

Also enlarged some click areas.

Test: atest -c com.android.systemui.qs.tiles.dialog.bluetooth
Bug: b/308878793
Change-Id: I02d05ee12624020d3bc9785fca1542cb8df82105
parent 5562f8ae
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -21,7 +21,7 @@
    style="@style/BluetoothTileDialog.Device"
    style="@style/BluetoothTileDialog.Device"
    android:layout_width="match_parent"
    android:layout_width="match_parent"
    android:layout_height="@dimen/bluetooth_dialog_device_height"
    android:layout_height="@dimen/bluetooth_dialog_device_height"
    android:paddingEnd="24dp"
    android:paddingEnd="0dp"
    android:paddingStart="20dp"
    android:paddingStart="20dp"
    android:layout_marginBottom="4dp">
    android:layout_marginBottom="4dp">


@@ -86,6 +86,7 @@
        android:id="@+id/gear_icon_image"
        android:id="@+id/gear_icon_image"
        android:layout_width="0dp"
        android:layout_width="0dp"
        android:layout_height="24dp"
        android:layout_height="24dp"
        android:paddingEnd="24dp"
        android:src="@drawable/ic_settings_24dp"
        android:src="@drawable/ic_settings_24dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
+24 −0
Original line number Original line Diff line number Diff line
@@ -120,6 +120,16 @@
                android:visibility="gone"
                android:visibility="gone"
                app:constraint_referenced_ids="ic_arrow,see_all_text" />
                app:constraint_referenced_ids="ic_arrow,see_all_text" />


            <View
                android:id="@+id/see_all_clickable_row"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:contentDescription="@string/accessibility_bluetooth_device_settings_see_all"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/device_list"
                app:layout_constraintBottom_toTopOf="@+id/pair_new_device_text" />

            <ImageView
            <ImageView
                android:id="@+id/ic_arrow"
                android:id="@+id/ic_arrow"
                android:layout_marginStart="36dp"
                android:layout_marginStart="36dp"
@@ -141,6 +151,8 @@
                android:maxLines="1"
                android:maxLines="1"
                android:ellipsize="end"
                android:ellipsize="end"
                android:gravity="center_vertical"
                android:gravity="center_vertical"
                android:importantForAccessibility="no"
                android:clickable="false"
                android:layout_marginStart="0dp"
                android:layout_marginStart="0dp"
                android:paddingStart="20dp"
                android:paddingStart="20dp"
                android:text="@string/see_all_bluetooth_devices"
                android:text="@string/see_all_bluetooth_devices"
@@ -158,6 +170,16 @@
                android:visibility="gone"
                android:visibility="gone"
                app:constraint_referenced_ids="ic_add,pair_new_device_text" />
                app:constraint_referenced_ids="ic_add,pair_new_device_text" />


            <View
                android:id="@+id/pair_new_device_clickable_row"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:contentDescription="@string/accessibility_bluetooth_device_settings_pair_new_device"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/see_all_text"
                app:layout_constraintBottom_toTopOf="@+id/done_button" />

            <ImageView
            <ImageView
                android:id="@+id/ic_add"
                android:id="@+id/ic_add"
                android:layout_width="24dp"
                android:layout_width="24dp"
@@ -180,6 +202,8 @@
                android:maxLines="1"
                android:maxLines="1"
                android:ellipsize="end"
                android:ellipsize="end"
                android:gravity="center_vertical"
                android:gravity="center_vertical"
                android:importantForAccessibility="no"
                android:clickable="false"
                android:layout_marginStart="0dp"
                android:layout_marginStart="0dp"
                android:paddingStart="20dp"
                android:paddingStart="20dp"
                android:text="@string/pair_new_bluetooth_devices"
                android:text="@string/pair_new_bluetooth_devices"
+8 −0
Original line number Original line Diff line number Diff line
@@ -467,6 +467,10 @@


    <!-- Content description of the bluetooth device settings gear icon. [CHAR LIMIT=NONE] -->
    <!-- Content description of the bluetooth device settings gear icon. [CHAR LIMIT=NONE] -->
    <string name="accessibility_bluetooth_device_settings_gear">Click to configure device detail</string>
    <string name="accessibility_bluetooth_device_settings_gear">Click to configure device detail</string>
    <!-- Content description of the bluetooth device settings see all. [CHAR LIMIT=NONE] -->
    <string name="accessibility_bluetooth_device_settings_see_all">Click to see all devices</string>
    <!-- Content description of the bluetooth device settings pair new device. [CHAR LIMIT=NONE] -->
    <string name="accessibility_bluetooth_device_settings_pair_new_device">Click to pair new device</string>


    <!-- Content description of the battery when battery state is unknown for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
    <!-- Content description of the battery when battery state is unknown for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
    <string name="accessibility_battery_unknown">Battery percentage unknown.</string>
    <string name="accessibility_battery_unknown">Battery percentage unknown.</string>
@@ -640,6 +644,10 @@
    <string name="quick_settings_bluetooth_device_connected">Connected</string>
    <string name="quick_settings_bluetooth_device_connected">Connected</string>
    <!-- QuickSettings: Bluetooth dialog device saved default summary [CHAR LIMIT=NONE]-->
    <!-- QuickSettings: Bluetooth dialog device saved default summary [CHAR LIMIT=NONE]-->
    <string name="quick_settings_bluetooth_device_saved">Saved</string>
    <string name="quick_settings_bluetooth_device_saved">Saved</string>
    <!-- QuickSettings: Accessibility label to disconnect a device [CHAR LIMIT=NONE]-->
    <string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect">disconnect</string>
    <!-- QuickSettings: Accessibility label to activate a device [CHAR LIMIT=NONE]-->
    <string name="accessibility_quick_settings_bluetooth_device_tap_to_activate">activate</string>


    <!-- QuickSettings: Bluetooth secondary label for the battery level of a connected device [CHAR LIMIT=20]-->
    <!-- QuickSettings: Bluetooth secondary label for the battery level of a connected device [CHAR LIMIT=20]-->
    <string name="quick_settings_bluetooth_secondary_label_battery_level"><xliff:g id="battery_level_as_percentage">%s</xliff:g> battery</string>
    <string name="quick_settings_bluetooth_secondary_label_battery_level"><xliff:g id="battery_level_as_percentage">%s</xliff:g> battery</string>
+26 −7
Original line number Original line Diff line number Diff line
@@ -20,9 +20,12 @@ import android.content.Context
import android.os.Bundle
import android.os.Bundle
import android.view.LayoutInflater
import android.view.LayoutInflater
import android.view.View
import android.view.View
import android.view.View.AccessibilityDelegate
import android.view.View.GONE
import android.view.View.GONE
import android.view.View.VISIBLE
import android.view.View.VISIBLE
import android.view.ViewGroup
import android.view.ViewGroup
import android.view.accessibility.AccessibilityNodeInfo
import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction
import android.widget.ImageView
import android.widget.ImageView
import android.widget.Switch
import android.widget.Switch
import android.widget.TextView
import android.widget.TextView
@@ -80,8 +83,8 @@ constructor(
    private lateinit var doneButton: View
    private lateinit var doneButton: View
    private lateinit var seeAllViewGroup: View
    private lateinit var seeAllViewGroup: View
    private lateinit var pairNewDeviceViewGroup: View
    private lateinit var pairNewDeviceViewGroup: View
    private lateinit var seeAllText: View
    private lateinit var seeAllRow: View
    private lateinit var pairNewDeviceText: View
    private lateinit var pairNewDeviceRow: View
    private lateinit var deviceListView: RecyclerView
    private lateinit var deviceListView: RecyclerView


    override fun onCreate(savedInstanceState: Bundle?) {
    override fun onCreate(savedInstanceState: Bundle?) {
@@ -98,8 +101,8 @@ constructor(
        doneButton = requireViewById(R.id.done_button)
        doneButton = requireViewById(R.id.done_button)
        seeAllViewGroup = requireViewById(R.id.see_all_layout_group)
        seeAllViewGroup = requireViewById(R.id.see_all_layout_group)
        pairNewDeviceViewGroup = requireViewById(R.id.pair_new_device_layout_group)
        pairNewDeviceViewGroup = requireViewById(R.id.pair_new_device_layout_group)
        seeAllText = requireViewById(R.id.see_all_text)
        seeAllRow = requireViewById(R.id.see_all_clickable_row)
        pairNewDeviceText = requireViewById(R.id.pair_new_device_text)
        pairNewDeviceRow = requireViewById(R.id.pair_new_device_clickable_row)
        deviceListView = requireViewById<RecyclerView>(R.id.device_list)
        deviceListView = requireViewById<RecyclerView>(R.id.device_list)


        setupToggle()
        setupToggle()
@@ -107,8 +110,8 @@ constructor(


        subtitleTextView.text = context.getString(subtitleResIdInitialValue)
        subtitleTextView.text = context.getString(subtitleResIdInitialValue)
        doneButton.setOnClickListener { dismiss() }
        doneButton.setOnClickListener { dismiss() }
        seeAllText.setOnClickListener { bluetoothTileDialogCallback.onSeeAllClicked(it) }
        seeAllRow.setOnClickListener { bluetoothTileDialogCallback.onSeeAllClicked(it) }
        pairNewDeviceText.setOnClickListener {
        pairNewDeviceRow.setOnClickListener {
            bluetoothTileDialogCallback.onPairNewDeviceClicked(it)
            bluetoothTileDialogCallback.onPairNewDeviceClicked(it)
        }
        }
    }
    }
@@ -194,7 +197,8 @@ constructor(
                        deviceItem1.iconWithDescription?.second ==
                        deviceItem1.iconWithDescription?.second ==
                            deviceItem2.iconWithDescription?.second &&
                            deviceItem2.iconWithDescription?.second &&
                        deviceItem1.background == deviceItem2.background &&
                        deviceItem1.background == deviceItem2.background &&
                        deviceItem1.isEnabled == deviceItem2.isEnabled
                        deviceItem1.isEnabled == deviceItem2.isEnabled &&
                        deviceItem1.actionAccessibilityLabel == deviceItem2.actionAccessibilityLabel
                }
                }
            }
            }


@@ -238,6 +242,21 @@ constructor(
                        mutableDeviceItemClick.tryEmit(item)
                        mutableDeviceItemClick.tryEmit(item)
                        uiEventLogger.log(BluetoothTileDialogUiEvent.DEVICE_CLICKED)
                        uiEventLogger.log(BluetoothTileDialogUiEvent.DEVICE_CLICKED)
                    }
                    }
                    accessibilityDelegate =
                        object : AccessibilityDelegate() {
                            override fun onInitializeAccessibilityNodeInfo(
                                host: View,
                                info: AccessibilityNodeInfo
                            ) {
                                super.onInitializeAccessibilityNodeInfo(host, info)
                                info.addAction(
                                    AccessibilityAction(
                                        AccessibilityAction.ACTION_CLICK.id,
                                        item.actionAccessibilityLabel
                                    )
                                )
                            }
                        }
                }
                }
                nameView.text = item.deviceName
                nameView.text = item.deviceName
                summaryView.text = item.connectionSummary
                summaryView.text = item.connectionSummary
+2 −1
Original line number Original line Diff line number Diff line
@@ -49,5 +49,6 @@ data class DeviceItem(
    val connectionSummary: String = "",
    val connectionSummary: String = "",
    val iconWithDescription: Pair<Drawable, String>? = null,
    val iconWithDescription: Pair<Drawable, String>? = null,
    val background: Int? = null,
    val background: Int? = null,
    var isEnabled: Boolean = true
    var isEnabled: Boolean = true,
    var actionAccessibilityLabel: String = "",
)
)
Loading