| page.title=Gambar-dalam-gambar |
| page.keywords=pratinjau,sdk,PIP,Gambar-dalam-gambar |
| page.tags=androidn |
| |
| @jd:body |
| |
| <div id="qv-wrapper"> |
| <div id="qv"> |
| |
| <h2>Dalam dokumen ini</h2> |
| <ol> |
| <li><a href="#declaring">Mendeklarasikan Bahwa Aktivitas Anda Mendukung |
| Gambar-dalam-gambar</a></li> |
| <li><a href="#pip_button">Mengalihkan Aktivitas Anda ke Gambar-dalam-gambar</a> |
| </li> |
| <li><a href="#handling_ui">Menangani UI Selama Gambar-dalam-gambar</a> |
| </li> |
| <li><a href="#continuing_playback">Melanjutkan Pemutaran Video Saat dalam |
| Gambar-dalam-gambar</a></li> |
| <li><a href="#single_playback">Menggunakan Aktivitas Pemutaran Tunggal untuk |
| Gambar-dalam-gambar</a></li> |
| <li><a href="#best">Praktik Terbaik</a></li> |
| </ol> |
| |
| <h2>Lihat Juga</h2> |
| <ol> |
| <li><a href="{@docRoot}preview/features/multi-window.html">Dukungan |
| Multi-Jendela</a></li> |
| </ol> |
| |
| </div> |
| </div> |
| |
| <p>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.</p> |
| |
| <p>Aplikasi Anda bisa memutuskan kapan memicu mode PIP. Inilah beberapa contoh |
| kapan memasuki mode PIP:</p> |
| |
| <ul> |
| <li>Aplikasi Anda bisa memindahkan video ke dalam mode PIP bila pengguna mengarah |
| mundur dari video untuk menjelajah materi lainnya.</li> |
| <li>Aplikasi Anda bisa mengalihkan video ke dalam mode PIP selagi pengguna menonton akhir episode |
| dari materi. Layar utama menampilkan informasi |
| promosi atau rangkuman tentang episode berikutnya dalam seri tersebut.</li> |
| <li>Aplikasi Anda bisa menyediakan suatu cara bagi pengguna untuk mengantre materi tambahan selagi |
| mereka menonton video. Video terus dimainkan dalam mode PIP selagi layar |
| utama menampilkan aktivitas pemilihan materi.</li> |
| </ul> |
| |
| <p>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 <b>Beranda</b> pada remote. Jika video |
| lain mulai diputar pada layar utama, jendela PIP secara otomatis |
| ditutup. Pengguna juga bisa menutup jendela PIP melalui Recents.</p> |
| |
| <img src="{@docRoot}preview/images/pip-active.png" /> |
| <p class="img-caption"><strong>Gambar 1.</strong> Video |
| Gambar-dalam-gambar terlihat di sudut layar selagi pengguna menjelajahi materi pada layar |
| utama.</p> |
| |
| <p>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.</p> |
| |
| <h2 id="declaring">Mendeklarasikan Bahwa Aktivitas Anda Mendukung Gambar-dalam-gambar</h2> |
| |
| <p>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 |
| <code>android:supportsPictureInPicture</code> dan |
| <code>android:resizeableActivity</code> ke <code>true</code>. Juga, tetapkan |
| bahwa aktivitas Anda menangani perubahan konfigurasi layout sehingga aktivitas |
| Anda tidak diluncurkan ulang saat terjadi perubahan layout selama transisi mode PIP.</p> |
| |
| <pre> |
| <activity android:name="VideoActivity" |
| android:resizeableActivity="true" |
| android:supportsPictureInPicture="true" |
| android:configChanges= |
| "screenSize|smallestScreenSize|screenLayout|orientation" |
| ... |
| </pre> |
| |
| <p>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.</p> |
| |
| <h2 id="pip_button">Mengalihkan Aktivitas Anda ke Gambar-dalam-gambar</h2> |
| |
| Bila Anda perlu untuk mengalihkan aktivitas ke mode PIP, panggil |
| <code>Activity.enterPictureInPictureMode()</code>. Contoh berikut mengalihkan |
| ke mode PIP bila pengguna memilih tombol PIP khusus pada baris |
| kontrol media:</p> |
| |
| <pre> |
| @Override |
| public void onActionClicked(Action action) { |
| if (action.getId() == R.id.lb_control_picture_in_picture) { |
| getActivity().enterPictureInPictureMode(); |
| return; |
| } |
| ... |
| </pre> |
| |
| <p>Menambahkan tombol PIP ke baris kontrol media Anda akan memungkinkan pengguna dengan mudah beralih |
| ke mode PIP selagi mengontrol pemutaran video.</p> |
| |
| <img src="{@docRoot}preview/images/pip-button.png" /> |
| <p class="img-caption"><strong>Gambar 1.</strong> Tombol |
| gambar-dalam-gambar pada baris kontrol media.</p> |
| |
| <p>Android N menyertakan kelas |
| <code>PlaybackControlsRow.PictureInPictureAction</code> baru yang mendefinisikan |
| tindakan PIP baris kontrol dan menggunakan ikon PIP.</p> |
| |
| <h2 id="handling_ui">Menangani UI Selama Gambar-dalam-gambar</h2> |
| |
| <p>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 <code>Activity.onPictureInPictureModeChanged()</code> atau |
| <code>Fragment.onPictureInPictureModeChanged()</code> dan aktifkan atau |
| nonaktifkan elemen UI saat diperlukan, misalnya:</p> |
| |
| <pre> |
| @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. |
| ... |
| } |
| } |
| </pre> |
| |
| <h2 id="continuing_playback">Melanjutkan Pemutaran Video Saat dalam |
| Gambar-dalam-gambar</h2> |
| |
| <p>Bila aktivitas Anda beralih ke PIP, sistem akan menganggap aktivitas tersebut berada dalam |
| keadaan berhenti sementara, dan akan memanggil metode <code>onPause()</code> aktivitas Anda. Pemutaran |
| video tidak boleh berhenti sementara dan harus terus diputar jika aktivitas tersebut |
| berhenti sementara karena mode PIP. Periksa PIP dalam metode |
| <code>onPause()</code> aktivitas Anda dan tangani pemutaran dengan tepat, |
| misalnya:</p> |
| |
| <pre> |
| @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 |
| ... |
| } |
| </pre> |
| |
| <p>Bila aktivitas meninggalkan mode PIP dan kembali ke mode layar penuh, sistem |
| akan melanjutkan aktivitas Anda dan memanggil metode <code>onResume()</code>.</p> |
| |
| <h2 id="single_playback">Menggunakan Aktivitas Pemutaran Tunggal untuk |
| Gambar-dalam-gambar</h2> |
| |
| <p>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.</p> |
| |
| <p>Guna memastikan aktivitas tunggal digunakan untuk permintaan pemutaran video dan |
| beralih ke atau dari mode PIP bila dibutuhkan, setel |
| <code>android:launchMode</code> aktivitas ke <code>singleTask</code> dalam manifes Anda: |
| </p> |
| |
| <pre> |
| <activity android:name="VideoActivity" |
| ... |
| android:supportsPictureInPicture="true" |
| android:launchMode="singleTask" |
| ... |
| </pre> |
| |
| <p>Di aktivitas Anda, ganti {@link android.app.Activity#onNewIntent |
| Activity.onNewIntent()} dan tangani video baru, yang akan menghentikan pemutaran video |
| jika diperlukan.</p> |
| |
| <h2 id="best">Praktik Terbaik</h2> |
| |
| <p>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 <a href="#handling_ui">Menangani UI Selama Gambar-dalam-gambar</a>.</p> |
| |
| <p>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.</p> |
| |
| <p>Bila aktivitas ada berada dalam mode PIP, secara default aktivitas itu tidak mendapatkan fokus masukan. Untuk |
| menerima kejadian masukan saat dalam mode PIP, gunakan |
| <code>MediaSession.setMediaButtonReceiver()</code>.</p> |