Saisie vocale

Chaque appareil Wear OS est doté d'un micro pour permettre aux utilisateurs d'interagir avec l'appareil par commande vocale. Il existe trois types d'interactions :

  • Enregistrer des fichiers audio
  • Obtenir la saisie vocale au format libre
  • Commandes vocales

Enregistrer des fichiers audio

L'enregistrement audio fonctionne sur un appareil Wear OS de la même manière que sur un téléphone. Reportez-vous à la documentation sur MediaRecorder pour en savoir plus sur l'enregistrement audio sur Android. Vous pouvez également consulter un exemple d'implémentation dans l'exemple Wear Speaker sur GitHub.

Obtenir la saisie vocale au format libre

Appelez l'activité de reconnaissance vocale intégrée au système pour mettre en place la saisie vocale pour les utilisateurs. Utilisez la saisie vocale pour envoyer des messages ou effectuer des recherches.

Dans votre application, appelez startActivityForResult() à l'aide de l'action ACTION_RECOGNIZE_SPEECH. Cela démarre l'activité de reconnaissance vocale. Vous pouvez ensuite gérer le résultat dans onActivityResult().

L'exemple de code suivant montre comment démarrer et gérer une activité de reconnaissance vocale.

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);
}

Commandes vocales

Les commandes vocales et les actions dans l'application d'assistance ne sont pas compatibles pour le moment, sauf pour les applications Wear OS en Chine. En savoir plus sur la compatibilité des commandes vocales pour la Chine