Obsługa wyjścia audio w przypadku okularów audio i okularów wyświetlających za pomocą funkcji zamiany tekstu na mowę

Odpowiednie urządzenia z XR
Te wskazówki pomogą Ci tworzyć aplikacje na te typy urządzeń z XR.
Okulary z dźwiękiem i
wyświetlaczem

Jednym ze sposobów komunikowania się z użytkownikami jest używanie technologii zamiany tekstu na mowę (TTS). TTS jest wbudowana w Androida (nie wymaga dodatkowych bibliotek) i działa nawet offline. Dzięki tym cechom TTS idealnie nadaje się do obsługi błędów w trybie bez wyświetlacza. Do funkcji TTS możesz się odwoływać za pomocą klasy TextToSpeech.

Tworzenie instancji TextToSpeech

Zalecamy utworzenie instancji klasy TextToSpeech w metodzie onCreate przewidywanej aktywności projected activity's, aby była ona dostępna przez cały czas trwania of the Activity:

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

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

Powiadamianie użytkownika o uruchomieniu TTS

W przypadku aplikacji bez wyświetlacza (tylko z dźwiękiem) poinformuj użytkownika o pomyślnym uruchomieniu aplikacji pomyślnie, wysyłając powiadomienie w metodzie onStart:

override fun onStart() {
  super.onStart()

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

Najważniejsze informacje o kodzie

  • TextToSpeech.QUEUE_FLUSH oznacza, że tekst powinien zostać odczytany natychmiast, a wszelkie inne wypowiedzi TTS powinny zostać przerwane.
  • W tym przypadku utteranceId, czyli "welcome_utterance", służy do określenia kiedy tekst zostanie odczytany. Więcej informacji znajdziesz w artykule UtteranceProgressListener.

Przerywanie TTS

Jeśli aplikacja musi przerwać TTS, wywołaj metodę stop:

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

Zwalnianie miejsca zajmowanego przez zasoby TTS

Gdy aktywność zostanie zniszczona, należy zwolnić miejsce w zasobach, wywołując metodę shutdown w metodzie onDestroy aktywności:

override fun onDestroy() {
    super.onDestroy()

    tts?.shutdown()
}