Xử lý đầu ra âm thanh cho kính âm thanh và kính hiển thị bằng tính năng Chuyển văn bản sang lời nói

Các thiết bị XR được hỗ trợ
Hướng dẫn này giúp bạn xây dựng các trải nghiệm cho những loại thiết bị XR sau.
Kính có màn hình
và âm thanh

Một trong những cách bạn có thể giao tiếp với người dùng là sử dụng công nghệ Chuyển văn bản sang lời nói (TTS). TTS được tích hợp sẵn vào Android (không cần thêm thư viện) và hoạt động ngay cả khi không có mạng. Những đặc điểm này giúp TTS trở thành lựa chọn lý tưởng để xử lý các điều kiện lỗi ở chế độ không hiển thị. Bạn có thể tham chiếu các tính năng TTS bằng lớp TextToSpeech.

Tạo thực thể TextToSpeech

Bạn nên tạo thực thể cho lớp TextToSpeech trên phương thức onCreate của hoạt động được chiếu để lớp này có sẵn trong suốt vòng đời của Activity:

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

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

Thông báo cho người dùng khi TTS bắt đầu

Đối với trải nghiệm không có màn hình (chỉ có âm thanh), hãy cho người dùng biết rằng ứng dụng của bạn đã khởi chạy thành công bằng cách thông báo cho họ trong phương thức onStart:

override fun onStart() {
  super.onStart()

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

Các điểm chính về mã

  • TextToSpeech.QUEUE_FLUSH cho biết văn bản cần được đọc ngay lập tức và mọi lời nói TTS khác sẽ bị gián đoạn.
  • utteranceId, trong trường hợp này là "welcome_utterance", được dùng để xác định thời điểm văn bản này được đọc xong. Để biết thêm thông tin, hãy xem UtteranceProgressListener.

Tạm dừng TTS

Nếu ứng dụng của bạn cần làm gián đoạn TTS, hãy gọi phương thức stop:

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

Dọn dẹp tài nguyên TTS

Bạn nên dọn dẹp tài nguyên khi hoạt động bị huỷ bằng cách gọi phương thức shutdown trong phương thức onDestroy của hoạt động:

override fun onDestroy() {
    super.onDestroy()

    tts?.shutdown()
}