This commit is contained in:
Horis
2024-08-27 20:41:53 +08:00
parent cc025e3184
commit 1a7a6f80b4
3 changed files with 5 additions and 27 deletions

View File

@@ -1,3 +1,5 @@
@file:Suppress("DEPRECATION")
package io.legado.app.service
import android.annotation.SuppressLint

View File

@@ -15,9 +15,7 @@ import androidx.media3.datasource.cache.CacheDataSink
import androidx.media3.datasource.cache.CacheDataSource
import androidx.media3.datasource.cache.LeastRecentlyUsedCacheEvictor
import androidx.media3.datasource.cache.SimpleCache
import androidx.media3.exoplayer.DefaultLoadControl
import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.exoplayer.LoadControl.Parameters
import androidx.media3.exoplayer.offline.DefaultDownloaderFactory
import androidx.media3.exoplayer.offline.DownloadRequest
import androidx.media3.exoplayer.offline.Downloader
@@ -49,7 +47,6 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.delay
import kotlinx.coroutines.ensureActive
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.sync.Mutex
@@ -70,9 +67,7 @@ import kotlin.coroutines.coroutineContext
class HttpReadAloudService : BaseReadAloudService(),
Player.Listener {
private val exoPlayer: ExoPlayer by lazy {
ExoPlayer.Builder(this)
.setLoadControl(CustomLoadControl())
.build()
ExoPlayer.Builder(this).build()
}
private val ttsFolderPath: String by lazy {
cacheDir.absolutePath + File.separator + "httpTTS" + File.separator
@@ -97,24 +92,10 @@ class HttpReadAloudService : BaseReadAloudService(),
private var downloadErrorNo: Int = 0
private var playErrorNo = 0
private val downloadTaskActiveLock = Mutex()
private var bufferedPercentage = 0
override fun onCreate() {
super.onCreate()
exoPlayer.addListener(this)
initBufferedPercentageUpdate()
}
private fun initBufferedPercentageUpdate() {
lifecycleScope.launch {
while (isActive) {
bufferedPercentage = exoPlayer.bufferedPercentage
when (exoPlayer.playbackState) {
Player.STATE_BUFFERING -> delay(10)
else -> delay(1000)
}
}
}
}
override fun onDestroy() {
@@ -596,10 +577,4 @@ class HttpReadAloudService : BaseReadAloudService(),
}
}
inner class CustomLoadControl : DefaultLoadControl() {
override fun shouldStartPlayback(parameters: Parameters): Boolean {
return super.shouldStartPlayback(parameters) || bufferedPercentage == 100
}
}
}

View File

@@ -38,6 +38,7 @@ quickChineseTransfer = "0.2.13"
room = "2.6.1"
splitties = "3.0.0"
rhino = "1.7.15"
desugar = "2.0.4"
activity = "1.9.1"
kotlinxSerialization = "1.7.1"
@@ -130,7 +131,7 @@ androidx-viewpager2 = { module = "androidx.viewpager2:viewpager2", version.ref =
androidx-webkit = { module = "androidx.webkit:webkit", version.ref = "webkit" }
colorpicker = { module = "com.jaredrummler:colorpicker", version.ref = "colorpicker" }
commons-text = { module = "org.apache.commons:commons-text", version.ref = "commonsText" }
desugar = { group = "com.android.tools", name = "desugar_jdk_libs_nio", version = "2.0.4" }
desugar = { group = "com.android.tools", name = "desugar_jdk_libs_nio", version.ref = "desugar" }
flexbox = { module = "com.google.android.flexbox:flexbox", version.ref = "flexbox" }
gson = { module = "com.google.code.gson:gson", version.ref = "gson" }