Как предлагает @CommonsWare, чтобы включить TLS 1.2 в библиотеках, которые я создал, один OkHttpClientBuilder
, который затем используется этими библиотеками, вот код:
Я создал gist с тем же шагом, который вы найдете ниже.
Ваш clientBuilder
Я взял пользовательский сокет из этого gist и связанная статья
val clientBuilder by lazy {
OkHttpClient.Builder()
.readTimeout(15, TimeUnit.SECONDS)
.connectTimeout(15, TimeUnit.SECONDS)
.enableTls12()
}
Модернизация
Ничего слишком сложного, просто добавьте client
в цепочку
val retrofit = Retrofit.Builder()
.addConverterFactory(MoshiConverterFactory.create(moshi))
.addCallAdapterFactory(CoroutineCallAdapterFactory())
.client(clientBuilder.build())
.baseUrl(BASE_URL)
.build()
Glide
Нам нужно добавить эти реализации, чтобы иметь возможность настраивать Glide
implementation 'com.github.bumptech.glide:annotations:4.11.0'
implementation('com.github.bumptech.glide:okhttp3-integration:4.11.0'){
exclude group: 'glide-parent'
}
@GlideModule
class CustomGlideModule : AppGlideModule() {
override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
registry.replace(
GlideUrl::class.java,
InputStream::class.java,
OkHttpUrlLoader.Factory(clientBuilder.build())
)
}
}
Как только это произойдет, вам нужно просто позвонить:
GlideApp.with(this)
.load(URL)
.into(image)
Exoplayer
implementation "com.google.android.exoplayer:extension-okhttp:2.11.4"
val dataSourceFactory: DataSource.Factory = OkHttpDataSourceFactory(
clientBuilder.build(),
Util.getUserAgent(context, "RecyclerView VideoPlayer")
)
, затем просто используйте ваш dataSourceFactory с вашим mediaSource и воспроизводите видео
val videoSource: MediaSource = ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(Uri.parse(mediaUrl))