TTS в конфликте с Talkback на устройствах Samsung: речь не работает или не прерванаAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 TTS в конфликте с Talkback на устройствах Samsung: речь не работает или не прервана

Сообщение Anonymous »

Я сталкиваюсь с проблемой функциональности текста в речь (TTS) на устройствах Samsung, где, по-видимому, существует конфликт между читателями экрана (Talkback) и двигателем TTS из моего приложения. Вместо этого прерывается, и разговор начинает говорить. Использование двигателя TTS по умолчанию в настройках телефона. Установка TTS для использования потока доступности (

Код: Выделить всё

AudioManager.STREAM_ACCESSIBILITY
) с высоким приоритетом .
6. Перед отправкой текста в TTS проверяет, если он говорит в настоящее время. Если занято, добавив новый текст в очередь, который будет произнесен потом; В противном случае, выступая немедленно.
7. вот моя текущая реализация TTS :
package com.gtdvm.echopoint.utils

import android.content.Context
import android.os.Bundle
import android.provider.Settings
import android.speech.tts.TextToSpeech
import android.media.AudioAttributes
import android.media.AudioManager
import android.util.Log
import java.util.Locale

class TextToSpeechHelper(context: Context) : TextToSpeech.OnInitListener {
private var tts: TextToSpeech? = null
private var pendingText: String? = null
private var ttsSuccess: Boolean = false
private var audioManager: AudioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
private val ttsVolume = Bundle().apply {
putFloat(TextToSpeech.Engine.KEY_PARAM_VOLUME, 1.0f)
putInt(TextToSpeech.Engine.KEY_PARAM_STREAM, AudioManager.STREAM_ACCESSIBILITY)
}

init {
Log.d(TTSTAG, "Initializing the synthesizer")
val userTTS = Settings.Secure.getString(context.contentResolver, Settings.Secure.TTS_DEFAULT_SYNTH) ?: "com.google.android.tts"
Log.d(TTSTAG, "User-selected synthesizer: $userTTS")
tts = TextToSpeech(context, this, userTTS).apply {
setAudioAttributes(
AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY)
.setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
.build()
)
}
}

override fun onInit(status: Int) {
Log.d(TTSTAG, "TTS initialization callback triggered")
if (status == TextToSpeech.SUCCESS) {
ttsSuccess = true
Log.d(TTSTAG, "TTS initialized successfully")
tts?.setLanguage(Locale.getDefault())
Log.d(TTSTAG, "Language set to system default")
val currentVoice = tts?.defaultEngine
Log.d(TTSTAG, "TTS engine: $currentVoice")
pendingText?.let { toSpeak(it) }
pendingText = null
} else {
Log.e(TTSTAG, "TTS initialization failed")
}
}

fun toSpeak(text: String) {
Log.d(TTSTAG, "Sending text to TTS")
if (!ttsSuccess) {
Log.d(TTSTAG, "TTS not initialized yet, storing text for later")
pendingText = text
} else {
if (tts?.isSpeaking == true) {
Log.d(TTSTAG, "TTS is currently speaking, adding text to queue")
tts?.speak(text, TextToSpeech.QUEUE_ADD, ttsVolume, null)
} else {
Log.d(TTSTAG, "Speaking text immediately")
tts?.speak(text, TextToSpeech.QUEUE_FLUSH, ttsVolume, null)
}
}
}

fun releaseTtsResources() {
Log.d(TTSTAG, "Releasing TTS resources")
tts?.stop()
tts?.shutdown()
tts = null
}

companion object {
const val TTSTAG = "TextToSpeechHelper"
}
}
< /code>

Вопрос < /strong>:

Почему мои TTS прерывается с помощью Talkback или других читателей экрана на устройствах Samsung, но не на Google Pixel Pro? Резюме? /> Так приятно иметь возможность писать код, когда у вас все еще есть видение - я рад за тех, кто может видеть. < /li>
< /ul>
Спасибо! < /p>

Подробнее здесь: https://stackoverflow.com/questions/794 ... nterrupted
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»