page.title=Gambar-dalam-gambar page.keywords=pratinjau,sdk,PIP,Gambar-dalam-gambar page.tags=androidn @jd:body
Di Android N, pengguna Android TV sekarang bisa menonton video dalam jendela yang disematkan di sudut layar saat menyusuri aplikasi. Mode gambar-dalam-gambar (PIP) memungkinkan aplikasi menjalankan aktivitas video dalam jendela yang disematkan selagi aktivitas lain tetap berjalan di latar belakang. Jendela PIP memungkinkan pengguna melakukan multitasking saat menggunakan aplikasi Anda, yang membantu pengguna menjadi lebih produktif.
Aplikasi Anda bisa memutuskan kapan memicu mode PIP. Inilah beberapa contoh kapan memasuki mode PIP:
Jendela PIP memiliki luas 240x135 dp dan ditampilkan di layer paling atas pada salah satu dari empat sudut layar, yang dipilih oleh sistem. Pengguna bisa memunculkan menu PIP yang memungkinkan mereka untuk beralih mode dari jendela PIP ke layar penuh, atau menutup jendela PIP, dengan menekan dan menahan tombol Beranda pada remote. Jika video lain mulai diputar pada layar utama, jendela PIP secara otomatis ditutup. Pengguna juga bisa menutup jendela PIP melalui Recents.
PIP memanfaatkan API multi-jendela yang tersedia di Android N untuk menyediakan jendela hamparan video yang disematkan. Untuk menambahkan PIP ke aplikasi, Anda harus mendaftarkan aktivitas yang mendukung PIP, mengalihkan aktivitas Anda ke mode PIP bila diperlukan, serta memastikan elemen UI disembunyikan dan pemutaran video berlanjut bila aktivitas dalam mode PIP.
Secara default, sistem tidak secara otomatis mendukung PIP untuk aplikasi.
Jika Anda ingin mendukung PIP dalam aplikasi, daftarkan aktivitas
video Anda dalam manifes dengan menyetel
android:supportsPictureInPicture
dan
android:resizeableActivity
ke true
. Juga, tetapkan
bahwa aktivitas Anda menangani perubahan konfigurasi layout sehingga aktivitas
Anda tidak diluncurkan ulang saat terjadi perubahan layout selama transisi mode PIP.
<activity android:name="VideoActivity" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:configChanges= "screenSize|smallestScreenSize|screenLayout|orientation" ...
Saat mendaftarkan aktivitas Anda, ingatlah bahwa dalam mode PIP aktivitas Anda akan ditampilkan pada jendela hamparan kecil pada layar TV. Aktivitas pemutaran video dengan UI minimal akan memberikan pengalaman pengguna terbaik. Aktivitas yang mengandung elemen UI kecil mungkin tidak memberikan pengalaman pengguna yang baik ketika beralih ke mode PIP, karena pengguna tidak dapat melihat elemen UI secara jelas di jendela PIP.
Activity.enterPictureInPictureMode()
. Contoh berikut mengalihkan
ke mode PIP bila pengguna memilih tombol PIP khusus pada baris
kontrol media:
@Override public void onActionClicked(Action action) { if (action.getId() == R.id.lb_control_picture_in_picture) { getActivity().enterPictureInPictureMode(); return; } ...
Menambahkan tombol PIP ke baris kontrol media Anda akan memungkinkan pengguna dengan mudah beralih ke mode PIP selagi mengontrol pemutaran video.
Android N menyertakan kelas
PlaybackControlsRow.PictureInPictureAction
baru yang mendefinisikan
tindakan PIP baris kontrol dan menggunakan ikon PIP.
Bila aktivitas memasuki mode PIP, aktivitas Anda seharusnya hanya menampilkan pemutaran
video. Buang elemen UI sebelum aktivitas Anda memasuki PIP,
dan pulihkan elemen ini bila aktivitas Anda beralih ke layar penuh lagi.
Ganti Activity.onPictureInPictureModeChanged()
atau
Fragment.onPictureInPictureModeChanged()
dan aktifkan atau
nonaktifkan elemen UI saat diperlukan, misalnya:
@Override public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) { if (isInPictureInPictureMode) { // Hide the controls in picture-in-picture mode. ... } else { // Restore the playback UI based on the playback status. ... } }
Bila aktivitas Anda beralih ke PIP, sistem akan menganggap aktivitas tersebut berada dalam
keadaan berhenti sementara, dan akan memanggil metode onPause()
aktivitas Anda. Pemutaran
video tidak boleh berhenti sementara dan harus terus diputar jika aktivitas tersebut
berhenti sementara karena mode PIP. Periksa PIP dalam metode
onPause()
aktivitas Anda dan tangani pemutaran dengan tepat,
misalnya:
@Override public void onPause() { // If called while in PIP mode, do not pause playback if (isInPictureInPictureMode()) { // Continue playback ... } // If paused but not in PIP, pause playback if necessary ... }
Bila aktivitas meninggalkan mode PIP dan kembali ke mode layar penuh, sistem
akan melanjutkan aktivitas Anda dan memanggil metode onResume()
.
Di aplikasi Anda, seorang pengguna bisa memilih video baru saat menyusuri materi di layar utama, selagi aktivitas pemutaran video dalam mode PIP. Putar video baru di aktivitas pemutaran yang ada dalam mode layar penuh, sebagai ganti meluncurkan aktivitas baru yang dapat membingungkan pengguna.
Guna memastikan aktivitas tunggal digunakan untuk permintaan pemutaran video dan
beralih ke atau dari mode PIP bila dibutuhkan, setel
android:launchMode
aktivitas ke singleTask
dalam manifes Anda:
<activity android:name="VideoActivity" ... android:supportsPictureInPicture="true" android:launchMode="singleTask" ...
Di aktivitas Anda, ganti {@link android.app.Activity#onNewIntent Activity.onNewIntent()} dan tangani video baru, yang akan menghentikan pemutaran video jika diperlukan.
PIP ditujukan untuk aktivitas yang memutar video layar penuh. Saat mengalihkan aktivitas Anda ke mode PIP, hindari menampilkan apa pun selain materi video. Pantau saat aktivitas Anda memasuki mode PIP dan sembunyikan elemen UI, seperti dijelaskan dalam Menangani UI Selama Gambar-dalam-gambar.
Karena jendela PIP ditampilkan sebagai jendela mengambang di sudut layar, Anda harus menghindari menampilkan informasi penting di layar utama di area mana saja yang bisa terhalang oleh jendela PIP.
Bila aktivitas ada berada dalam mode PIP, secara default aktivitas itu tidak mendapatkan fokus masukan. Untuk
menerima kejadian masukan saat dalam mode PIP, gunakan
MediaSession.setMediaButtonReceiver()
.