「Android SDK の統合プロセス」ドキュメントでは、Android SDK のインポートと設定、IP アドレスのパース、ネットワークライブラリへの設定の適用、統合の検証という完全なプロセスについて説明しています。この Topic では、OkHttp を使用して HTTPDNS を ExoPlayer と統合する方法について説明します。
1. 背景
Media3 は、Google が推奨するオーディオおよびビデオエクスペリエンスを作成するためのソリューションです。 デバイスの機能に基づいた強力なカスタマイズ、信頼性、および最適化を可能にするシンプルなアーキテクチャを提供し、断片化によって引き起こされる複雑さを排除することで、Android アプリケーションでリッチなオーディオビジュアルエクスペリエンスを表示できるようにします。 ExoPlayer は、Media3 のプレーヤーインターフェイスのデフォルト実装です。
ExoPlayer は DataSource を使用して URI からリソースデータを読み取ります。デフォルトでは、DefaultHttpDataSource はネットワークからリソースを読み取り、HttpURLConnection を使用してネットワークリクエストを処理します。ExoPlayer は、OkHttp ネットワークライブラリを使用してネットワークリクエストを処理する OkHttpDataSource 拡張機能も提供します。
OkHttp はカスタム DNS サービス用のインターフェイスを公開しており、HTTPDNS を簡単に統合できます。このため、OkHttpDataSource が推奨されるデータソースです。
2. OkHttp 拡張 SDK の追加
ExoPlayer のバージョンに基づいて、適切な OkHttp 拡張 SDK を選択します。
androidx media より前のバージョンの ExoPlayer を使用している場合は、次の依存関係を追加する必要があります。
implementation "androidx.media3:media3-datasource-okhttp:x.x.x"OkHttp 拡張 SDK のバージョンは、ExoPlayer SDK のバージョンと一致している必要があります。
ExoPlayer2 を使用している場合は、次の依存関係を追加する必要があります。
implementation "com.google.android.exoplayer:extension-okhttp:x.x.x"OkHttp 拡張ライブラリのバージョンが ExoPlayer SDK のバージョンと一致していることを確認してください。
3. OkHttp 拡張 SDK の使用
OkHttp 拡張ライブラリを使用して ExoPlayer を初期化します。
OkHttp 拡張ライブラリを統合するためのコードは、前述の両方の ExoPlayer バージョンで一貫しています。
val player: ExoPlayer = ExoPlayer.Builder(context)
.setMediaSourceFactory(
DefaultMediaSourceFactory(
OkHttpDataSource.Factory(
Call.Factory {
// client は OkHttpClient インスタンスです。プロジェクトの OkHttpClient インスタンスに置き換えてください。
request -> client.newCall(request)
})
)
)
.build()ExoPlayer player = new ExoPlayer.Builder(context)
.setMediaSourceFactory(new DefaultMediaSourceFactory(new OkHttpDataSource.Factory(new Call.Factory() {
@NonNull
@Override
public Call newCall(@NonNull Request request) {
// client は OkHttpClient インスタンスです。プロジェクトの OkHttpClient インスタンスに置き換えてください。
return client.newCall(request);
}
})))
.build();4. OkHttp での HTTPDNS の使用
最後に、HTTPDNS を OkHttp ネットワークライブラリに統合します。 具体的な統合手順については、「Android HTTPDNS+OkHttp のベストプラクティス」をご参照ください。