Menggunakan Library Picture-in-Picture Jetpack

Library Jetpack Picture-in-Picture (PiP) menawarkan solusi yang efisien dan andal bagi developer aplikasi Android untuk menerapkan fungsi PiP, terutama untuk aplikasi pemutaran media, komunikasi video, dan navigasi. Dengan menyediakan API terpadu, library ini membantu menghilangkan kode boilerplate, bug umum dalam aplikasi, dan meningkatkan kualitas keseluruhan pengalaman pengguna PiP.

Library Jetpack PiP memfasilitasi API PiP yang ada dengan mengatasi beberapa tantangan dan inkonsistensi utama di seluruh ekosistem Android:

  • Fragmentasi OS: Library ini secara otomatis menangani perbedaan dalam panggilan API PiP di berbagai versi Android, seperti menggunakan enterPictureInPictureMode sebelum Android 12 dan isAutoEnterEnabled setelahnya, sehingga developer tidak perlu mengelola perbedaan versi.
  • Parameter PiP yang salah: Library ini menyediakan solusi terpadu untuk menetapkan parameter PiP dengan benar, misalnya setSourceRectHint, untuk membuat animasi yang lancar dan berkualitas tinggi selama pemutaran media.
  • Callback status PiP terpadu: Library ini menggabungkan onPictureInPictureModeChanged dan onPictureInPictureUiStateChanged ke dalam satu antarmuka callback terpadu (PictureInPictureDelegate.OnPictureInPictureEventListener) untuk pengelolaan status dan UI yang disederhanakan.
  • Pengurangan kode boilerplate: Library ini mengurangi jumlah kode boilerplate yang berulang dengan menawarkan kumpulan RemoteActions yang telah ditentukan sebelumnya untuk kasus penggunaan umum, seperti kontrol pemutaran dan tindakan panggilan video.
  • Perlindungan dari perubahan di masa mendatang: Fitur PiP lebih lanjut dikirimkan melalui library Jetpack, sehingga pengguna dapat mengakses fungsi tambahan dengan upaya minimal atau tanpa upaya.

Mengadopsi Jetpack

Untuk mengadopsi Library Jetpack, ganti implementasi PiP kustom yang ada dengan API Library Jetpack. Kompleksitas dan biaya adopsi akan bervariasi berdasarkan implementasi aplikasi saat ini.

Bagian berikut menjelaskan beberapa kasus penggunaan PiP yang umum dan langkah-langkah implementasi yang diperlukan:

Aplikasi memberi tahu library tentang status aktif atau tidak aktif navigasi dan menetapkan rasio aspek. Library Jetpack akan menangani sisanya.

Perbedaan utama:

  1. Tidak perlu membedakan auto-enter dan legacy-enter di sisi aplikasi.
  2. Antarmuka callback gabungan.
  3. Builder PictureInPictureParams baru untuk kompatibilitas mundur.

Panggilan Video

Aplikasi memberi tahu library tentang status aktif atau tidak aktif panggilan dan menetapkan rasio aspek.

Perbedaan utama:

  1. Tidak perlu membedakan auto-enter dan legacy-enter di sisi aplikasi.
  2. Antarmuka callback gabungan.
  3. Builder PictureInPictureParams baru untuk kompatibilitas mundur.
  4. Ikon tindakan standar untuk panggilan video.

Pemutaran Video

Library Jetpack menawarkan delegasi pemutar yang dapat Anda integrasikan untuk mengelola pengaktifan atau penonaktifan PiP dan menetapkan petunjuk persegi panjang sumber secara akurat. Anda juga dapat memilih kumpulan objek RemoteAction yang telah ditentukan sebelumnya, mirip dengan yang digunakan dalam skenario panggilan video.

Fitur utama:

  1. Menangani kompatibilitas mundur, tidak diperlukan pemeriksaan versi OS.
  2. Sinkronisasi status pemutaran dan kontrol entri otomatis.
  3. Pelacakan geometri berkelanjutan menggunakan SourceRectHint.