|
|
@@ -77,6 +77,7 @@ class HttpReadAloudService : BaseReadAloudService(),
|
|
|
}
|
|
|
}.onFailure {
|
|
|
toastOnUi("朗读出错:${it.localizedMessage}")
|
|
|
+ AppLog.put("朗读出错:${it.localizedMessage}", it)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -115,7 +116,12 @@ class HttpReadAloudService : BaseReadAloudService(),
|
|
|
playAudio(file)
|
|
|
}
|
|
|
} else if (speakText.isEmpty()) {
|
|
|
+ AppLog.put("阅读段落内容为空,使用无声音频代替。")
|
|
|
createSilentSound(fileName)
|
|
|
+ if (index == nowSpeak) {
|
|
|
+ val file = getSpeakFileAsMd5(fileName)
|
|
|
+ playAudio(file)
|
|
|
+ }
|
|
|
return@forEachIndexed
|
|
|
} else {
|
|
|
runCatching {
|
|
|
@@ -138,7 +144,7 @@ class HttpReadAloudService : BaseReadAloudService(),
|
|
|
}?.let { ct ->
|
|
|
response.headers["Content-Type"]?.let { contentType ->
|
|
|
if (!contentType.matches(ct.toRegex())) {
|
|
|
- throw NoStackTraceException(response.body!!.string())
|
|
|
+ throw NoStackTraceException("TTS服务器返回错误:" + response.body!!.string())
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -182,9 +188,16 @@ class HttpReadAloudService : BaseReadAloudService(),
|
|
|
AppLog.put(msg, it)
|
|
|
it.printOnDebug()
|
|
|
if (downloadErrorNo > 5) {
|
|
|
+ AppLog.put("TTS服务器连续5次错误,已暂停阅读。")
|
|
|
+ toastOnUi("TTS服务器连续5次错误,已暂停阅读。")
|
|
|
pauseReadAloud(true)
|
|
|
} else {
|
|
|
+ AppLog.put("TTS下载音频出错,使用无声音频代替。")
|
|
|
createSilentSound(fileName)
|
|
|
+ if (index == nowSpeak) {
|
|
|
+ val file = getSpeakFileAsMd5(fileName)
|
|
|
+ playAudio(file)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -194,7 +207,7 @@ class HttpReadAloudService : BaseReadAloudService(),
|
|
|
}.onStart {
|
|
|
downloadTaskIsActive = true
|
|
|
}.onError {
|
|
|
- AppLog.put("朗读下载出错\n${it.localizedMessage}")
|
|
|
+ AppLog.put("朗读下载出错\n${it.localizedMessage}", it)
|
|
|
}.onFinally {
|
|
|
downloadTaskIsActive = false
|
|
|
}
|
|
|
@@ -245,8 +258,10 @@ class HttpReadAloudService : BaseReadAloudService(),
|
|
|
private fun removeCacheFile() {
|
|
|
val titleMd5 = MD5Utils.md5Encode16(textChapter?.title ?: "")
|
|
|
FileUtils.listDirsAndFiles(ttsFolderPath)?.forEach {
|
|
|
- if (!it.name.startsWith(titleMd5)
|
|
|
- && System.currentTimeMillis() - it.lastModified() > 600000
|
|
|
+ val isSilentSound = it.length() == 2160L
|
|
|
+ if ((!it.name.startsWith(titleMd5)
|
|
|
+ && System.currentTimeMillis() - it.lastModified() > 600000)
|
|
|
+ || isSilentSound
|
|
|
) {
|
|
|
FileUtils.delete(it.absolutePath)
|
|
|
}
|
|
|
@@ -334,6 +349,7 @@ class HttpReadAloudService : BaseReadAloudService(),
|
|
|
playErrorNo++
|
|
|
if (playErrorNo >= 5) {
|
|
|
toastOnUi("朗读连续5次错误, 最后一次错误代码(${error.localizedMessage})")
|
|
|
+ AppLog.put("朗读连续5次错误, 最后一次错误代码(${error.localizedMessage})", error)
|
|
|
ReadAloud.pause(this)
|
|
|
} else {
|
|
|
playNext()
|