diff --git a/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt b/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt index 727293319..243d78f75 100644 --- a/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt +++ b/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt @@ -6,6 +6,7 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter +import android.graphics.Bitmap import android.graphics.BitmapFactory import android.media.AudioManager import android.os.Bundle @@ -80,6 +81,7 @@ abstract class BaseReadAloudService : BaseService(), internal var pageIndex = 0 private var needResumeOnAudioFocusGain = false private var dsJob: Job? = null + private var cover: Bitmap? = null var pageChanged = false private val broadcastReceiver = object : BroadcastReceiver() { @@ -103,6 +105,15 @@ abstract class BaseReadAloudService : BaseService(), if (AppConfig.ttsTimer > 0) { toastOnUi("朗读定时 ${AppConfig.ttsTimer} 分钟") } + execute { + @Suppress("BlockingMethodInNonBlockingContext") + ImageLoader + .loadBitmap(this@BaseReadAloudService, ReadBook.book?.getDisplayCover()) + .submit() + .get() + }.onSuccess { + cover = it + } } fun observeLiveBus() { @@ -384,15 +395,11 @@ abstract class BaseReadAloudService : BaseService(), .setContentIntent( activityPendingIntent("activity") ) - kotlin.runCatching { - ImageLoader - .loadBitmap(this@BaseReadAloudService, ReadBook.book?.getDisplayCover()) - .submit() - .get() - }.getOrElse { - BitmapFactory.decodeResource(resources, R.drawable.icon_read_book) - }.let { - builder.setLargeIcon(it) + if (cover != null) { + builder.setLargeIcon(cover) + } else { + val bitmap = BitmapFactory.decodeResource(resources, R.drawable.icon_read_book) + builder.setLargeIcon(bitmap) } if (pause) { builder.addAction(