mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
@file:Suppress("DEPRECATION")
|
||||
|
||||
package io.legado.app.service
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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" }
|
||||
|
||||
Reference in New Issue
Block a user