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 dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import okhttp3.*
|
import okhttp3.*
|
||||||
|
import okhttp3.ConnectionSpec
|
||||||
|
import okhttp3.TlsVersion
|
||||||
import okio.ByteString
|
import okio.ByteString
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
@@ -29,10 +31,20 @@ class EdgeTtsManager @Inject constructor(
|
|||||||
* TTS 专用 OkHttpClient(不带业务拦截器)
|
* TTS 专用 OkHttpClient(不带业务拦截器)
|
||||||
* 业务拦截器(SignatureInterceptor、UnbindInterceptor)会干扰 WebSocket 连接
|
* 业务拦截器(SignatureInterceptor、UnbindInterceptor)会干扰 WebSocket 连接
|
||||||
*/
|
*/
|
||||||
private val ttsClient = OkHttpClient.Builder()
|
private val ttsClient: OkHttpClient = run {
|
||||||
.connectTimeout(10, java.util.concurrent.TimeUnit.SECONDS)
|
// 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)
|
.readTimeout(30, java.util.concurrent.TimeUnit.SECONDS)
|
||||||
.build()
|
.build()
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "EdgeTTS"
|
private const val TAG = "EdgeTTS"
|
||||||
|
|||||||
Reference in New Issue
Block a user