Entrada de texto por voz

Todo dispositivo Wear OS vem com um microfone, para que os usuários possam usar a voz para interagir com ele. Você pode dividir as interações em três tipos:

  • Gravar áudio
  • Captar uma entrada de fala livre
  • Comandos de voz

Gravar áudio

A gravação de áudio em um dispositivo Wear OS funciona da mesma forma que em um smartphone. Consulte a documentação do MediaRecorder para saber mais sobre como gravar áudio no Android. Confira também uma implementação de exemplo do Wear Speaker (link em inglês) no GitHub.

Captar uma entrada de fala livre

Chame a atividade integrada do reconhecedor de fala do sistema para receber entradas de fala dos usuários. Use a entrada de fala para enviar mensagens ou fazer pesquisas.

No app, chame startActivityForResult() usando a ação ACTION_RECOGNIZE_SPEECH. Isso inicia a atividade de reconhecimento de fala, e você pode processar o resultado em onActivityResult().

O exemplo de código abaixo mostra como iniciar e processar uma atividade de reconhecimento de fala.

var textForVoiceInput by remember { mutableStateOf("") }

val voiceLauncher =
    rememberLauncherForActivityResult(
        ActivityResultContracts.StartActivityForResult()
    ) { activityResult ->
        // This is where you process the intent and extract the speech text from the intent.
        activityResult.data?.let { data ->
            val results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)
            textForVoiceInput = results?.get(0) ?: "None"
        }
    }

val scrollState = rememberScrollState()

ScreenScaffold(scrollState = scrollState) {
    // rest of implementation here
    // ...
    Column(
        // rest of implementation here
        // ...

        // Create an intent that can start the Speech Recognizer activity
        val voiceIntent: Intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
            putExtra(
                RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                RecognizerIntent.LANGUAGE_MODEL_FREE_FORM
            )

            putExtra(
                RecognizerIntent.EXTRA_PROMPT,
                stringResource(R.string.voice_text_entry_label)
            )
        }
        // Invoke the process from a chip
        Chip(
            onClick = {
                voiceLauncher.launch(voiceIntent)
            },
            label = stringResource(R.string.voice_input_label),
            secondaryLabel = textForVoiceInput
        )
    }
}

Comandos de voz

No momento, os apps Comandos de voz e Ações no app do Google Assistente não têm suporte, exceto em apps para Wear OS na China. Leia mais sobre o suporte para comandos de voz para a China.