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.