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.

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

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