Como lidar com a saída de áudio para óculos de IA usando a conversão de texto em voz

Dispositivos XR aplicáveis
Estas orientações ajudam você a criar experiências para esses tipos de dispositivos de XR.
Óculos de IA

Uma das maneiras de se comunicar com os usuários é usando a tecnologia de conversão de texto em voz (TTS). O TTS é integrado ao Android (não exigindo bibliotecas adicionais) e funciona mesmo off-line. Essas características tornam a TTS ideal para lidar com condições de erro no modo sem tela. É possível fazer referência aos recursos de TTS usando a classe TextToSpeech.

Instanciar TextToSpeech

Recomendamos instanciar a classe TextToSpeech no método onCreate() da atividade dos óculos de IA para que ela fique disponível durante todo o ciclo de vida do Activity:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    tts = TextToSpeech(this) { status ->
        if(status == TextToSpeech.SUCCESS) {
        // Initialization successful
        }else {
            // Initialization failed
        }
    }
    ...
}

Notificar o usuário quando a TTS for iniciada

Para experiências sem tela (somente áudio), informe ao usuário que o app foi iniciado com sucesso notificando-o no método onStart():

override fun onStart() {
  super.onStart()

  tts?.speak("Welcome to Android XR Glasses!",
  TextToSpeech.QUEUE_FLUSH,
  null,
  "welcome_utterance")
  ...
}

Pontos principais sobre o código

  • TextToSpeech.QUEUE_FLUSH indica que o texto precisa ser falado imediatamente e que qualquer outra fala de TTS precisa ser interrompida.
  • O utteranceId, nesse caso "welcome_utterance", é usado para identificar quando o texto termina de ser falado. Para mais informações, consulte o UtteranceProgressListener.

Interromper a TTS

Se o app precisar interromper a TTS, chame o método stop():

// This interrupts the current utterance and discards other utterances in the queue.
tts?.stop()
...

Limpar recursos de TTS

Limpe os recursos quando a atividade for destruída chamando o método shutdown() no método onDestroy() da atividade:

override fun onDestroy() {
    super.onDestroy()

    tts?.shutdown()
}