|  |  |  | @ -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() | 
			
		
	
	
		
			
				
					|  |  |  | 
 |