Dokumen proses integrasi SDK Android menjelaskan proses lengkap impor dan konfigurasi SDK Android, penguraian alamat IP, penerapan pengaturan ke pustaka jaringan Anda, serta verifikasi integrasi. Topik ini menjelaskan cara mengintegrasikan HTTPDNS dengan ExoPlayer menggunakan OkHttp.
1. Latar Belakang
Media3 adalah solusi yang direkomendasikan oleh Google untuk menciptakan pengalaman audio dan video. Media3 menyediakan arsitektur sederhana dengan penyesuaian kuat, keandalan, serta optimasi berdasarkan fitur perangkat guna menghilangkan kompleksitas akibat fragmentasi, sehingga aplikasi Android dapat menampilkan pengalaman audiovisual yang kaya. ExoPlayer merupakan implementasi default dari antarmuka Player di Media3.
ExoPlayer menggunakan DataSource untuk membaca data sumber daya dari URI. Secara default, DefaultHttpDataSource membaca sumber daya dari jaringan dan memanfaatkan HttpURLConnection untuk menangani permintaan jaringan. ExoPlayer juga menyediakan ekstensi OkHttpDataSource, yang menggunakan pustaka jaringan OkHttp untuk menangani permintaan jaringan.
OkHttp menyediakan antarmuka untuk layanan DNS kustom, yang memungkinkan integrasi HTTPDNS secara mudah. Oleh karena itu, OkHttpDataSource merupakan sumber data yang direkomendasikan.
2. Menambahkan SDK Ekstensi OkHttp
Pilih SDK Ekstensi OkHttp yang sesuai berdasarkan versi ExoPlayer yang digunakan.
Jika Anda menggunakan versi ExoPlayer di bawah androidx media, tambahkan dependensi berikut:
implementation "androidx.media3:media3-datasource-okhttp:x.x.x"Versi SDK Ekstensi OkHttp harus sesuai dengan versi SDK ExoPlayer.
Jika Anda menggunakan ExoPlayer2, tambahkan dependensi berikut:
implementation "com.google.android.exoplayer:extension-okhttp:x.x.x"Versi SDK Ekstensi OkHttp harus sesuai dengan versi SDK ExoPlayer.
3. Menggunakan SDK Ekstensi OkHttp
Saat menginisialisasi ExoPlayer, gunakan SDK Ekstensi OkHttp.
Kode SDK Ekstensi OkHttp yang digunakan untuk kedua versi ExoPlayer adalah sama.
val player: ExoPlayer = ExoPlayer.Builder(context)
.setMediaSourceFactory(
DefaultMediaSourceFactory(
OkHttpDataSource.Factory(
Call.Factory {
// Ganti nilai ini dengan instance OkHttpClient di proyek Anda.
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) {
// Ganti nilai ini dengan instance OkHttpClient di proyek Anda.
return client.newCall(request);
}
})))
.build();4. Menggunakan HTTPDNS dengan OkHttp
Terakhir, integrasikan HTTPDNS ke dalam pustaka jaringan OkHttp. Untuk langkah-langkah integrasi spesifik, lihat Praktik Terbaik untuk Android HTTPDNS+OkHttp.