Помощник по быстрым клавишам

Справочник по сочетаниям клавиш помогает пользователям находить сочетания клавиш для платформы и открытых приложений. Опубликуйте быстрые клавиши приложения в Помощнике по сочетаниям клавиш, чтобы пользователям было удобнее работать.

Чтобы открыть экран с быстрыми клавишами, пользователи нажимают Meta +/. Эта функция доступна в Android 7.0 (уровень API 24) и более поздних версиях.

Приложение, открытое на устройстве, на котором показаны системные сочетания клавиш.
Рисунок 1. Помощник по быстрым клавишам.

Предоставлять ярлыки для Помощника по быстрым клавишам

Вы можете предоставить списки доступных быстрых клавиш в Помощник по быстрым клавишам, переопределив обратный вызов окна onProvideKeyboardShortcuts(). В следующем фрагменте кода показано, как с помощью onProvideKeyboardShortcuts() добавить группу из четырех ярлыков:

class MainActivity : ComponentActivity() {
    // Activity codes such as overridden onStart method.

    override fun onProvideKeyboardShortcuts(
        data: MutableList<KeyboardShortcutGroup>?,
        menu: Menu?,
        deviceId: Int
    ) {
        val shortcutGroup =
            KeyboardShortcutGroup(
                "Cursor movement",
                listOf(
                    KeyboardShortcutInfo("Up", KeyEvent.KEYCODE_P, KeyEvent.META_CTRL_ON),
                    KeyboardShortcutInfo("Down", KeyEvent.KEYCODE_N, KeyEvent.META_CTRL_ON),
                    KeyboardShortcutInfo("Forward", KeyEvent.KEYCODE_F, KeyEvent.META_CTRL_ON),
                    KeyboardShortcutInfo("Backward", KeyEvent.KEYCODE_B, KeyEvent.META_CTRL_ON),
                )
            )
        data?.add(shortcutGroup)
    }
}

KeyboardShortcutInfo – сочетание клавиш. Список быстрых клавиш упакован в объект KeyboardShortcutGroup. Приложения уведомляют Помощник по сочетаниям клавиш о доступных сочетаниях клавиш, добавляя объекты KeyboardShortcutGroup в изменяемый список, передаваемый в качестве первого параметра метода.

Как упорядочить быстрые клавиши с помощью групп

Помощник по быстрым клавишам показывает сочетания клавиш в отдельных группах, чтобы пользователи могли находить их по сценарию использования или для экранов вашего приложения. На рисунке 2 показаны быстрые клавиши, разделенные на две группы: перемещение курсора и редактирование сообщений.

Приложение, открытое на устройстве, с группами ярлыков.
Рисунок 2. Категории в Справочнике по сочетаниям клавиш.

Приложение регистрирует две или более групп сочетаний клавиш, создавая объект KeyboardShortcutGroup для каждой группы. В следующем фрагменте кода два объекта KeyboardShortCutGroup добавляются в изменяемый список, передаваемый методу onProvideKeyboardShortcuts(). Объекты отображаются в виде категорий в Справочнике по сочетаниям клавиш, как показано на рисунке 2.

override fun onProvideKeyboardShortcuts(
    data: MutableList<KeyboardShortcutGroup>?,
    menu: Menu?,
    deviceId: Int
) {
    val cursorMovement = KeyboardShortcutGroup(
        "Cursor movement",
        listOf(
            KeyboardShortcutInfo("Up", KeyEvent.KEYCODE_P, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Down", KeyEvent.KEYCODE_N, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Forward", KeyEvent.KEYCODE_F, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Backward", KeyEvent.KEYCODE_B, KeyEvent.META_CTRL_ON),
        )
    )

    val messageEdit = KeyboardShortcutGroup(
        "Message editing",
        listOf(
            KeyboardShortcutInfo("Select All", KeyEvent.KEYCODE_A, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo(
                "Send a message",
                KeyEvent.KEYCODE_ENTER,
                KeyEvent.META_SHIFT_ON
            )
        )
    )

    data?.add(cursorMovement)
    data?.add(messageEdit)
}

Как открыть справку по быстрым клавишам из кода

Приложения показывают экран с быстрыми клавишами, вызывая метод requestShowKeyboardShortcuts(). В следующем фрагменте кода Помощник по быстрым клавишам открывается, когда пользователь нажимает кнопку или клавишу Ввод.

val activity = LocalActivity.current

Button(
    onClick = {
        activity?.requestShowKeyboardShortcuts()
    }
) {
    Text(text = "Show keyboard shortcuts")
}