diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt index 354902f59..b11cb26ac 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt @@ -31,6 +31,7 @@ import io.legado.app.ui.association.ImportHttpTtsDialog import io.legado.app.ui.file.HandleFileContract import io.legado.app.ui.login.SourceLoginActivity import io.legado.app.utils.ACache +import io.legado.app.utils.FileUtils import io.legado.app.utils.GSON import io.legado.app.utils.fromJsonObject import io.legado.app.utils.gone @@ -40,6 +41,7 @@ import io.legado.app.utils.sendToClip import io.legado.app.utils.showDialogFragment import io.legado.app.utils.splitNotBlank import io.legado.app.utils.startActivity +import io.legado.app.utils.toastOnUi import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.visible import kotlinx.coroutines.Dispatchers.IO @@ -47,6 +49,7 @@ import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.conflate import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.launch +import java.io.File /** * tts引擎管理 @@ -175,6 +178,7 @@ class SpeakEngineDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_recycl override fun onMenuItemClick(item: MenuItem?): Boolean { when (item?.itemId) { + R.id.menu_clear -> clearCache() R.id.menu_add -> showDialogFragment() R.id.menu_default -> viewModel.importDefault() R.id.menu_import_local -> importDocResult.launch { @@ -232,6 +236,18 @@ class SpeakEngineDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_recycl adapter.notifyItemRangeChanged(adapter.getHeaderCount(), adapter.itemCount) } + fun clearCache() { + execute { + ReadAloud.upReadAloudClass() + val ttsFolderPath = "${requireContext().cacheDir.absolutePath}${File.separator}httpTTS${File.separator}" + FileUtils.listDirsAndFiles(ttsFolderPath)?.forEach { + FileUtils.delete(it.absolutePath) + } + toastOnUi(R.string.clear_cache_success) + } + + } + inner class Adapter(context: Context) : RecyclerAdapter(context) { diff --git a/app/src/main/res/menu/speak_engine.xml b/app/src/main/res/menu/speak_engine.xml index 6956a1ebc..0e0853ab7 100644 --- a/app/src/main/res/menu/speak_engine.xml +++ b/app/src/main/res/menu/speak_engine.xml @@ -3,6 +3,12 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> + +