fix: EdgeTTS 强制 TLS 1.2 兼容 Android 8.1
Android 8.1 默认 TLS 配置可能不支持服务器要求的密码套件, 强制启用 TLS 1.2 + MODERN_TLS + COMPATIBLE_TLS 回退。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,8 @@ import android.media.MediaPlayer
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import kotlinx.coroutines.*
|
||||
import okhttp3.*
|
||||
import okhttp3.ConnectionSpec
|
||||
import okhttp3.TlsVersion
|
||||
import okio.ByteString
|
||||
import timber.log.Timber
|
||||
import java.io.ByteArrayOutputStream
|
||||
@@ -29,10 +31,20 @@ class EdgeTtsManager @Inject constructor(
|
||||
* TTS 专用 OkHttpClient(不带业务拦截器)
|
||||
* 业务拦截器(SignatureInterceptor、UnbindInterceptor)会干扰 WebSocket 连接
|
||||
*/
|
||||
private val ttsClient = OkHttpClient.Builder()
|
||||
.connectTimeout(10, java.util.concurrent.TimeUnit.SECONDS)
|
||||
.readTimeout(30, java.util.concurrent.TimeUnit.SECONDS)
|
||||
.build()
|
||||
private val ttsClient: OkHttpClient = run {
|
||||
// Android 8.1 TLS 兼容:强制启用 TLS 1.2 + 现代密码套件
|
||||
val spec = ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
|
||||
.tlsVersions(TlsVersion.TLS_1_2)
|
||||
.build()
|
||||
val compatSpec = ConnectionSpec.Builder(ConnectionSpec.COMPATIBLE_TLS)
|
||||
.tlsVersions(TlsVersion.TLS_1_2, TlsVersion.TLS_1_1)
|
||||
.build()
|
||||
OkHttpClient.Builder()
|
||||
.connectionSpecs(listOf(spec, compatSpec, ConnectionSpec.CLEARTEXT))
|
||||
.connectTimeout(15, java.util.concurrent.TimeUnit.SECONDS)
|
||||
.readTimeout(30, java.util.concurrent.TimeUnit.SECONDS)
|
||||
.build()
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val TAG = "EdgeTTS"
|
||||
|
||||
Reference in New Issue
Block a user