Entrada de voz

Todos los dispositivos Wear OS incluyen un micrófono, por lo que los usuarios pueden usar su voz para interactuar con el dispositivo. Puedes dividir las interacciones en tres tipos:

  • Grabar audio
  • Obtener entrada de voz de formato libre
  • Acciones de voz

Grabación de audio

La grabación de audio en un dispositivo Wear OS funciona de la misma manera que en un teléfono. Consulta la documentación de MediaRecorder para obtener más información sobre la grabación de audios en Android. También puedes ver una implementación de muestra en el ejemplo de bocina en Wear en GitHub.

Entrada de voz de formato libre

Llama a la actividad de reconocimiento de voz integrada del sistema para obtener la entrada de voz de los usuarios. Usa la entrada de voz para enviar mensajes o realizar búsquedas.

En tu app, puedes llamar a startActivityForResult() con la acción ACTION_RECOGNIZE_SPEECH. Esto inicia la actividad de reconocimiento de voz y, luego, puedes controlar el resultado en onActivityResult().

En la siguiente muestra de código, se explica el modo en que puedes iniciar y controlar una actividad de reconocimiento de voz.

Kotlin

private const val SPEECH_REQUEST_CODE = 0
...
// Create an intent that can start the Speech Recognizer activity
private fun displaySpeechRecognizer() {
    val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
        putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
    }
    // This starts the activity and populates the intent with the speech text.
    startActivityForResult(intent, SPEECH_REQUEST_CODE)
}

// This callback is invoked when the Speech Recognizer returns.
// This is where you process the intent and extract the speech text from the intent.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    if (requestCode == SPEECH_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
        val spokenText: String? =
                data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS).let { results ->
                    results[0]
                }
        // Do something with spokenText.
    }
    super.onActivityResult(requestCode, resultCode, data)
}

Java

private static final int SPEECH_REQUEST_CODE = 0;

// Create an intent that can start the Speech Recognizer activity
private void displaySpeechRecognizer() {
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
// This starts the activity and populates the intent with the speech text.
    startActivityForResult(intent, SPEECH_REQUEST_CODE);
}

// This callback is invoked when the Speech Recognizer returns.
// This is where you process the intent and extract the speech text from the intent.
@Override
protected void onActivityResult(int requestCode, int resultCode,
        Intent data) {
    if (requestCode == SPEECH_REQUEST_CODE && resultCode == RESULT_OK) {
        List<String> results = data.getStringArrayListExtra(
                RecognizerIntent.EXTRA_RESULTS);
        String spokenText = results.get(0);
        // Do something with spokenText.
    }
    super.onActivityResult(requestCode, resultCode, data);
}

Acciones de voz

Por el momento, no se admiten las Acciones de voz ni las Acciones en apps de Asistente, excepto las apps de Wear OS en China. Obtén más información sobre la compatibilidad con Acciones de voz para China.