Auxiliar de atalhos do teclado

O Assistente de atalhos de teclado permite que os usuários descubram atalhos de teclado para o e apps abertos. Publicar os atalhos do app no assistente de atalhos do teclado para melhorar a produtividade do usuário e facilitar o uso.

Os usuários pressionam Meta+/ para abrir a tela de atalhos do teclado, que é disponível no Android 7.0 (nível 24 da API) e versões mais recentes.

Aplicativo aberto em um dispositivo mostrando atalhos do sistema.
Figura 1. Auxiliar de atalhos do teclado.
.

Fornecer atalhos para o assistente de atalhos do teclado

Você pode fornecer listas de atalhos de teclado disponíveis para Auxiliar de atalhos de teclado substituindo a Callback da janela onProvideKeyboardShortcuts(). O snippet a seguir demonstra uma implementação de onProvideKeyboardShortcuts() para adicionar um grupo de quatro atalhos:

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 descreve um atalho de teclado. A lista de atalhos do teclado é agrupada como uma Objeto KeyboardShortcutGroup. Os apps notificam os atalhos de teclado disponíveis para o Assistente de atalhos do teclado adicionando os objetos KeyboardShortcutGroup para a lista mutável transmitida como o primeiro parâmetro do método.

Organizar atalhos do teclado com grupos

O Assistente de atalhos de teclado mostra os atalhos do teclado em grupos separados para que os usuários possam encontrar atalhos por caso de uso ou para telas de seu app. A Figura 2 mostra os atalhos do teclado. categorizadas em dois grupos: movimento do cursor e edição de mensagens.

Aplicativo aberto em um dispositivo mostrando grupos de atalhos.
Figura 2. Categorias no assistente de atalhos do teclado.

Seu app registra dois ou mais grupos de atalhos de teclado criando um KeyboardShortcutGroup para cada grupo. No snippet a seguir, dois objetos KeyboardShortCutGroup são adicionados ao lista mutável transmitida para o método onProvideKeyboardShortcuts(). Os objetos são exibidos como categorias no Auxiliar de atalhos de teclado como a Figura 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)
}

Abrir o assistente de atalhos do teclado no código

Os apps mostram a tela de atalhos do teclado chamando o método requestShowKeyboardShortcuts() . No snippet a seguir, o Assistente de atalhos do teclado é aberto quando os usuários tocam ou clique no botão ou pressione a tecla Enter.

val activity = LocalContext.current as Activity

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