Запуск Android Kotlin работает неправильноAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Запуск Android Kotlin работает неправильно

Сообщение Anonymous »

Я хочу получить строку из внешнего API, а затем использовать TextToService для чтения строки, когда пользователь нажимает строку виджета (с помощью GlanceAppWidget).
Это вот как я это делаю:
Используйте readState как изменяемое состояние, если пользователь нажимает, измените его на true, чтобы отобразить значок загрузки, вызовите API и прочитайте текст, а затем измените его. вернитесь к false, чтобы показать изображение. Все делается асинхронно путем вызова сопрограммы запуска

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

class WordWidget : GlanceAppWidget(), CoroutineScope {
var tts: TextToSpeech? = null
var readingState = mutableStateOf(false)

override val coroutineContext: CoroutineContext
get() = Dispatchers.IO

override suspend fun provideGlance(context: Context, id: GlanceId) {
initializeTextToSpeech(context)
provideContent {
Content(context)
}
}

fun makeSentenceAndRead() {
launch {
try {
readingState.value = true
val sentence = getTextFromAPI()
tts?.speak(sentence, TextToSpeech.QUEUE_FLUSH, null, "sentenceWidget")
} finally {
readingState.value = false
}
}
}

private fun initializeTextToSpeech(context: Context) {
tts = TextToSpeech(context) { status ->
if (status != TextToSpeech.ERROR) {
tts?.language = Locale.GERMAN
}
}
}

// This is the widget content
@Composable
fun Content(
context: Context
) {
Column(
) {
Row(
modifier = GlanceModifier.fillMaxWidth().clickable { makeSentenceAndRead() }
) {
if (readingState.value) {
CircularProgressIndicator()
} else {
Image()
}
}
}
}
}

Это отлично работает на симуляторе Pixel 3a API 34. Но на моем реальном устройстве Samsung, когда я нажимаю на строку, CircularProgressIndicator иногда загружается навсегда без переключения обратно на изображение. Или если оно снова изменится на изображение, tts просто не прочитает текст.
В чем здесь может быть проблема? Я пытался использовать Dispatchers.Default, но та же проблема все еще сохраняется.
Мое первое приложение для Android на Kotlin, использующее Glance. Может ли кто-нибудь сказать мне, в чем может быть проблема, пожалуйста?< /п>

Подробнее здесь: https://stackoverflow.com/questions/786 ... g-properly
Ответить

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

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

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

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

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