1 page.title=Gambar-dalam-gambar 2 page.keywords=pratinjau,sdk,PIP,Gambar-dalam-gambar 3 page.tags=androidn 4 5 @jd:body 6 7 <div id="qv-wrapper"> 8 <div id="qv"> 9 10 <h2>Dalam dokumen ini</h2> 11 <ol> 12 <li><a href="#declaring">Mendeklarasikan Bahwa Aktivitas Anda Mendukung 13 Gambar-dalam-gambar</a></li> 14 <li><a href="#pip_button">Mengalihkan Aktivitas Anda ke Gambar-dalam-gambar</a> 15 </li> 16 <li><a href="#handling_ui">Menangani UI Selama Gambar-dalam-gambar</a> 17 </li> 18 <li><a href="#continuing_playback">Melanjutkan Pemutaran Video Saat dalam 19 Gambar-dalam-gambar</a></li> 20 <li><a href="#single_playback">Menggunakan Aktivitas Pemutaran Tunggal untuk 21 Gambar-dalam-gambar</a></li> 22 <li><a href="#best">Praktik Terbaik</a></li> 23 </ol> 24 25 <h2>Lihat Juga</h2> 26 <ol> 27 <li><a href="{@docRoot}preview/features/multi-window.html">Dukungan 28 Multi-Jendela</a></li> 29 </ol> 30 31 </div> 32 </div> 33 34 <p>Di Android N, pengguna Android TV sekarang bisa menonton video 35 dalam jendela yang disematkan di sudut layar saat menyusuri 36 aplikasi. Mode gambar-dalam-gambar (PIP) memungkinkan aplikasi menjalankan aktivitas 37 video dalam jendela yang disematkan selagi aktivitas lain tetap berjalan di 38 latar belakang. Jendela PIP memungkinkan pengguna melakukan multitasking saat menggunakan aplikasi Anda, yang 39 membantu pengguna menjadi lebih produktif.</p> 40 41 <p>Aplikasi Anda bisa memutuskan kapan memicu mode PIP. Inilah beberapa contoh 42 kapan memasuki mode PIP:</p> 43 44 <ul> 45 <li>Aplikasi Anda bisa memindahkan video ke dalam mode PIP bila pengguna mengarah 46 mundur dari video untuk menjelajah materi lainnya.</li> 47 <li>Aplikasi Anda bisa mengalihkan video ke dalam mode PIP selagi pengguna menonton akhir episode 48 dari materi. Layar utama menampilkan informasi 49 promosi atau rangkuman tentang episode berikutnya dalam seri tersebut.</li> 50 <li>Aplikasi Anda bisa menyediakan suatu cara bagi pengguna untuk mengantre materi tambahan selagi 51 mereka menonton video. Video terus dimainkan dalam mode PIP selagi layar 52 utama menampilkan aktivitas pemilihan materi.</li> 53 </ul> 54 55 <p>Jendela PIP memiliki luas 240x135 dp dan ditampilkan di layer paling atas pada salah satu 56 dari empat sudut layar, yang dipilih oleh sistem. Pengguna bisa memunculkan 57 menu PIP yang memungkinkan mereka untuk beralih mode dari jendela PIP ke layar penuh, atau menutup jendela 58 PIP, dengan menekan dan menahan tombol <b>Beranda</b> pada remote. Jika video 59 lain mulai diputar pada layar utama, jendela PIP secara otomatis 60 ditutup. Pengguna juga bisa menutup jendela PIP melalui Recents.</p> 61 62 <img src="{@docRoot}preview/images/pip-active.png" /> 63 <p class="img-caption"><strong>Gambar 1.</strong> Video 64 Gambar-dalam-gambar terlihat di sudut layar selagi pengguna menjelajahi materi pada layar 65 utama.</p> 66 67 <p>PIP memanfaatkan API multi-jendela yang tersedia di Android N untuk 68 menyediakan jendela hamparan video yang disematkan. Untuk menambahkan PIP ke aplikasi, Anda harus 69 mendaftarkan aktivitas yang mendukung PIP, mengalihkan aktivitas Anda ke mode PIP bila 70 diperlukan, serta memastikan elemen UI disembunyikan dan pemutaran video berlanjut bila 71 aktivitas dalam mode PIP.</p> 72 73 <h2 id="declaring">Mendeklarasikan Bahwa Aktivitas Anda Mendukung Gambar-dalam-gambar</h2> 74 75 <p>Secara default, sistem tidak secara otomatis mendukung PIP untuk aplikasi. 76 Jika Anda ingin mendukung PIP dalam aplikasi, daftarkan aktivitas 77 video Anda dalam manifes dengan menyetel 78 <code>android:supportsPictureInPicture</code> dan 79 <code>android:resizeableActivity</code> ke <code>true</code>. Juga, tetapkan 80 bahwa aktivitas Anda menangani perubahan konfigurasi layout sehingga aktivitas 81 Anda tidak diluncurkan ulang saat terjadi perubahan layout selama transisi mode PIP.</p> 82 83 <pre> 84 <activity android:name="VideoActivity" 85 android:resizeableActivity="true" 86 android:supportsPictureInPicture="true" 87 android:configChanges= 88 "screenSize|smallestScreenSize|screenLayout|orientation" 89 ... 90 </pre> 91 92 <p>Saat mendaftarkan aktivitas Anda, ingatlah bahwa dalam mode PIP aktivitas 93 Anda akan ditampilkan pada jendela hamparan kecil pada layar TV. Aktivitas 94 pemutaran video dengan UI minimal akan memberikan pengalaman pengguna terbaik. Aktivitas yang 95 mengandung elemen UI kecil mungkin tidak memberikan pengalaman pengguna yang baik 96 ketika beralih ke mode PIP, karena pengguna tidak dapat melihat elemen UI secara jelas 97 di jendela PIP.</p> 98 99 <h2 id="pip_button">Mengalihkan Aktivitas Anda ke Gambar-dalam-gambar</h2> 100 101 Bila Anda perlu untuk mengalihkan aktivitas ke mode PIP, panggil 102 <code>Activity.enterPictureInPictureMode()</code>. Contoh berikut mengalihkan 103 ke mode PIP bila pengguna memilih tombol PIP khusus pada baris 104 kontrol media:</p> 105 106 <pre> 107 @Override 108 public void onActionClicked(Action action) { 109 if (action.getId() == R.id.lb_control_picture_in_picture) { 110 getActivity().enterPictureInPictureMode(); 111 return; 112 } 113 ... 114 </pre> 115 116 <p>Menambahkan tombol PIP ke baris kontrol media Anda akan memungkinkan pengguna dengan mudah beralih 117 ke mode PIP selagi mengontrol pemutaran video.</p> 118 119 <img src="{@docRoot}preview/images/pip-button.png" /> 120 <p class="img-caption"><strong>Gambar 1.</strong> Tombol 121 gambar-dalam-gambar pada baris kontrol media.</p> 122 123 <p>Android N menyertakan kelas 124 <code>PlaybackControlsRow.PictureInPictureAction</code> baru yang mendefinisikan 125 tindakan PIP baris kontrol dan menggunakan ikon PIP.</p> 126 127 <h2 id="handling_ui">Menangani UI Selama Gambar-dalam-gambar</h2> 128 129 <p>Bila aktivitas memasuki mode PIP, aktivitas Anda seharusnya hanya menampilkan pemutaran 130 video. Buang elemen UI sebelum aktivitas Anda memasuki PIP, 131 dan pulihkan elemen ini bila aktivitas Anda beralih ke layar penuh lagi. 132 Ganti <code>Activity.onPictureInPictureModeChanged()</code> atau 133 <code>Fragment.onPictureInPictureModeChanged()</code> dan aktifkan atau 134 nonaktifkan elemen UI saat diperlukan, misalnya:</p> 135 136 <pre> 137 @Override 138 public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) { 139 if (isInPictureInPictureMode) { 140 // Hide the controls in picture-in-picture mode. 141 ... 142 } else { 143 // Restore the playback UI based on the playback status. 144 ... 145 } 146 } 147 </pre> 148 149 <h2 id="continuing_playback">Melanjutkan Pemutaran Video Saat dalam 150 Gambar-dalam-gambar</h2> 151 152 <p>Bila aktivitas Anda beralih ke PIP, sistem akan menganggap aktivitas tersebut berada dalam 153 keadaan berhenti sementara, dan akan memanggil metode <code>onPause()</code> aktivitas Anda. Pemutaran 154 video tidak boleh berhenti sementara dan harus terus diputar jika aktivitas tersebut 155 berhenti sementara karena mode PIP. Periksa PIP dalam metode 156 <code>onPause()</code> aktivitas Anda dan tangani pemutaran dengan tepat, 157 misalnya:</p> 158 159 <pre> 160 @Override 161 public void onPause() { 162 // If called while in PIP mode, do not pause playback 163 if (isInPictureInPictureMode()) { 164 // Continue playback 165 ... 166 } 167 // If paused but not in PIP, pause playback if necessary 168 ... 169 } 170 </pre> 171 172 <p>Bila aktivitas meninggalkan mode PIP dan kembali ke mode layar penuh, sistem 173 akan melanjutkan aktivitas Anda dan memanggil metode <code>onResume()</code>.</p> 174 175 <h2 id="single_playback">Menggunakan Aktivitas Pemutaran Tunggal untuk 176 Gambar-dalam-gambar</h2> 177 178 <p>Di aplikasi Anda, seorang pengguna bisa memilih video baru saat menyusuri materi di 179 layar utama, selagi aktivitas pemutaran video dalam mode PIP. Putar 180 video baru di aktivitas pemutaran yang ada dalam mode layar penuh, sebagai ganti 181 meluncurkan aktivitas baru yang dapat membingungkan pengguna.</p> 182 183 <p>Guna memastikan aktivitas tunggal digunakan untuk permintaan pemutaran video dan 184 beralih ke atau dari mode PIP bila dibutuhkan, setel 185 <code>android:launchMode</code> aktivitas ke <code>singleTask</code> dalam manifes Anda: 186 </p> 187 188 <pre> 189 <activity android:name="VideoActivity" 190 ... 191 android:supportsPictureInPicture="true" 192 android:launchMode="singleTask" 193 ... 194 </pre> 195 196 <p>Di aktivitas Anda, ganti {@link android.app.Activity#onNewIntent 197 Activity.onNewIntent()} dan tangani video baru, yang akan menghentikan pemutaran video 198 jika diperlukan.</p> 199 200 <h2 id="best">Praktik Terbaik</h2> 201 202 <p>PIP ditujukan untuk aktivitas yang memutar video layar penuh. Saat mengalihkan 203 aktivitas Anda ke mode PIP, hindari menampilkan apa pun selain materi video. 204 Pantau saat aktivitas Anda memasuki mode PIP dan sembunyikan elemen UI, seperti dijelaskan 205 dalam <a href="#handling_ui">Menangani UI Selama Gambar-dalam-gambar</a>.</p> 206 207 <p>Karena jendela PIP ditampilkan sebagai jendela mengambang di sudut 208 layar, Anda harus menghindari menampilkan informasi penting di layar utama 209 di area mana saja yang bisa terhalang oleh jendela PIP.</p> 210 211 <p>Bila aktivitas ada berada dalam mode PIP, secara default aktivitas itu tidak mendapatkan fokus masukan. Untuk 212 menerima kejadian masukan saat dalam mode PIP, gunakan 213 <code>MediaSession.setMediaButtonReceiver()</code>.</p> 214