すべてのプロダクト
Search
ドキュメントセンター

HTTPDNS:Android HTTPDNS と ExoPlayer のベストプラクティス

最終更新日:Nov 09, 2025

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 のベストプラクティス」をご参照ください。