diff --git a/app/src/main/java/com/xiaoqu/watch/service/manager/EdgeTtsManager.kt b/app/src/main/java/com/xiaoqu/watch/service/manager/EdgeTtsManager.kt index aef20e2..23e9599 100644 --- a/app/src/main/java/com/xiaoqu/watch/service/manager/EdgeTtsManager.kt +++ b/app/src/main/java/com/xiaoqu/watch/service/manager/EdgeTtsManager.kt @@ -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"