مدیریت برونداد صوتی برای عینک صوتی و عینک نمایشگردار بااستفاده از «نوشتار به گفتار»

دستگاه‌های XR واجدشرایط
این راهنمایی به شما کمک می‌کند برای این نوع دستگاه‌های واقعیت گسترده تجربه بسازید.
عینک
نمایشگردار و صوتی

یکی از روش‌هایی که می‌توانید با کاربرانتان ارتباط برقرار کنید استفاده از فناوری «نوشتار به گفتار» (TTS) است. «نوشتار به گفتار» در Android تعبیه شده است (به کتابخانه‌های اضافی نیاز ندارد) و حتی در حالت آفلاین نیز کار می‌کند. این ویژگی‌ها «تبدیل نوشتار به گفتار» را برای رسیدگی به شرایط خطا در حالت بدون نمایشگر ایده‌آل می‌کند. بااستفاده از کلاس TextToSpeech می‌توانید به ویژگی‌های «تبدیل نوشتار به گفتار» ارجاع دهید.

نمونه‌سازی TextToSpeech

توصیه می‌کنیم کلاس TextToSpeech را در روش onCreate فعالیت پیش‌بینی‌شده نمونه‌سازی کنید تا برای طول عمر Activity دردسترس باشد:

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

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

وقتی نوشتار به گفتار شروع می‌شود به کاربر اطلاع داده شود

برای تجربه‌های بدون نمایشگر (فقط صوتی)، با مطلع کردن کاربر در روش onStart به او اطلاع دهید که برنامه‌تان با موفقیت راه‌اندازی شده است:

override fun onStart() {
  super.onStart()

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

نکات کلیدی درباره کد

  • TextToSpeech.QUEUE_FLUSH نشان می‌دهد که نوشتار باید فوراً خوانده شود و هرگونه بیان نوشتار به گفتار دیگری باید قطع شود.
  • از utteranceId، در این مورد "welcome_utterance"، برای شناسایی زمان پایان خواندن این نوشتار استفاده می‌شود. برای اطلاعات بیشتر، به UtteranceProgressListener مراجعه کنید.

قطع کردن «نوشتار به گفتار»

اگر برنامه‌تان نیاز به قطع کردن «نوشتار به گفتار» دارد، روش stop را فراخوانی کنید:

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

پاک کردن منابع «نوشتار به گفتار»

وقتی فعالیتتان با فراخوانی روش shutdown در روش onDestroy فعالیت ازبین می‌رود، باید منابع را پاک کنید:

override fun onDestroy() {
    super.onDestroy()

    tts?.shutdown()
}