1 page.title=Imagem em imagem 2 page.keywords=preview,sdk,PIP,Picture-in-picture 3 page.tags=androidn 4 5 @jd:body 6 7 <div id="tb-wrapper"> 8 <div id="tb"> 9 10 <h2>Neste documento</h2> 11 <ol> 12 <li><a href="#declaring">Declarar que sua atividade oferece suporte ao modo de 13 imagem em imagem</a></li> 14 <li><a href="#pip_button">Alternar a atividade para o modo de imagem em imagem</a> 15 </li> 16 <li><a href="#handling_ui">Lidar com a IU durante o modo de imagem em imagem</a> 17 </li> 18 <li><a href="#continuing_playback">Continuar reproduo de vdeo no modo de 19 imagem em imagem</a></li> 20 <li><a href="#single_playback">Usar uma nica atividade de reproduo para 21 imagem em imagem</a></li> 22 <li><a href="#best">Prticas recomendadas</a></li> 23 </ol> 24 25 <h2>Veja tambm</h2> 26 <ol> 27 <li><a href="{@docRoot}preview/features/multi-window.html">Suporte a 28 vrias janelas</a></li> 29 </ol> 30 31 </div> 32 </div> 33 34 <p>No Android N, os usurios do Android TV agora podem assistir a um vdeo 35 em uma janela fixada em um canto da tela enquanto navegam em 36 aplicativos. O modo de imagem em imagem (PIP) permite que os aplicativos executem uma atividade de vdeo 37 na janela fixada enquanto outra atividade continua em 38 segundo plano. A janela do PIP permite que os usurios realizem vrias tarefas enquanto usam seu aplicativo, o que os 39 ajuda a ser mais produtivos.</p> 40 41 <p>Seu aplicativo pode decidir quando acionar o modo de PIP. Veja alguns exemplos de 42 quando entrar no modo de PIP:</p> 43 44 <ul> 45 <li>Seu aplicativo pode passar um vdeo para o modo de PIP quando o usurio 46 sai do vdeo para procurar outro contedo.</li> 47 <li>Seu aplicativo pode passar um vdeo para o modo de PIP quando um usurio assiste ao final 48 de um episdio de contedo. A janela principal exibe informaes promocionais ou de resumo 49 sobre o prximo episdio da srie.</li> 50 <li>Seu aplicativo pode fornecer uma maneira de os usurios colocarem contedo adicional em uma fila enquanto 51 assistem a um vdeo. O vdeo continua a ser reproduzido no modo de PIP enquanto a tela principal 52 exibe uma atividade de seleo de contedo.</li> 53 </ul> 54 55 <p>A janela do modo de PIP tem 240x135 dp e mostrada na camada superior de um dos 56 quatro cantos da tela, escolhido pelo sistema. O usurio pode exibir um 57 menu de PIP que permite que coloque a janela do PIP em tela inteira ou feche-a 58 ao pressionar o boto <b>Home</b> do controle remoto. Se outro 59 vdeo comear a ser reproduzido na tela principal, a janela do PIP ser fechada 60 automaticamente. Os usurios tambm podem fechar a janela do PIP em Recents.</p> 61 62 <img src="{@docRoot}images/android-7.0/pip-active.png" /> 63 <p class="img-caption"><strong>Figura 1.</strong> Um vdeo no modo de imagem em imagem 64 visvel no canto da tela enquanto o usurio navega por contedo 65 na janela principal.</p> 66 67 <p>O PIP utiliza as APIs de vrias janelas disponveis no Android N para 68 fornecer a janela sobreposta de vdeo fixo. Para adicionar o modo de PIP ao seu aplicativo, voc deve 69 registrar as atividades que oferecem suporte a PIP, alternar a atividade para o modo de PIP conforme 70 a necessidade e garantir que os elementos de IU sejam ocultados e que a reproduo do vdeo continue quando 71 a atividade estiver no modo de PIP.</p> 72 73 <h2 id="declaring">Declarar que sua atividade oferece suporte ao modo de imagem em imagem</h2> 74 75 <p>Por padro, o sistema no oferece suporte ao modo de PIP automaticamente para seus aplicativos. 76 Se quiser esse suporte para seu aplicativo, registre a atividade 77 de vdeo no manifesto definindo 78 <code>android:supportsPictureInPicture</code> e 79 <code>android:resizeableActivity</code> como <code>true</code>. Alm disso, especifique 80 que a atividade processa alteraes na configurao de layout de forma que a atividade 81 no seja reiniciada quando ocorrem essas alteraes durante as transies do modo de 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>Ao registrar a atividade, lembre-se de que, no modo de PIP, ela 93 mostrada em uma pequena janela sobreposta em uma tela de TV. Atividades de reproduo de 94 vdeo com uma quantidade mnima de itens de IU oferecem a melhor experincia do usurio. Atividades que contm 95 pequenos elementos de IU podem no oferecer uma boa experincia do usurio 96 no modo de PIP, pois ele no conseguir enxergar os detalhes desses elementos 97 na janela do PIP.</p> 98 99 <h2 id="pip_button">Alternar a atividade para o modo de imagem em imagem</h2> 100 101 Quando precisar colocar a atividade no modo de PIP, chame 102 <code>Activity.enterPictureInPictureMode()</code>. O exemplo a seguir 103 entra no modo de PIP quando o usurio seleciona um boto dedicado ao PIP na barra de controle de 104 uma mdia:</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>Adicionar um boto de PIP barra de controle de mdia permite que o usurio entre no 117 modo de PIP com facilidade ao controlar a reproduo de um vdeo.</p> 118 119 <img src="{@docRoot}images/android-7.0/pip-button.png" /> 120 <p class="img-caption"><strong>Figura 1.</strong> Um boto do 121 modo de imagem em imagem em uma barra de controle de mdia.</p> 122 123 <p>O Android N inclui uma nova classe 124 <code>PlaybackControlsRow.PictureInPictureAction</code> que define aes do PIP 125 para a barra de controle e usa o cone do PIP.</p> 126 127 <h2 id="handling_ui">Lidar com a IU durante o modo de imagem em imagem</h2> 128 129 <p>Quando a atividade entra no modo de PIP, ela deve mostrar apenas a reproduo do 130 vdeo. Remova elementos de IU antes que a atividade entre no modo de PIP 131 e restaure esses elementos quando a atividade voltar ao modo de tela inteira. 132 Substitua <code>Activity.onPictureInPictureModeChanged()</code> ou 133 <code>Fragment.onPictureInPictureModeChanged()</code> e ative ou 134 desative os elementos de interface conforme for necessrio. Por exemplo:</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">Continuar reproduo de vdeo no modo de 150 imagem em imagem</h2> 151 152 <p>Quando a atividade entra no modo de PIP, o sistema a considera 153 pausada e chama o mtodo <code>onPause()</code> da atividade. A reproduo 154 de vdeos no dever ser pausada se a atividade 155 for pausada devido ao modo de PIP. Verifique o PIP no mtodo 156 <code>onPause()</code> da atividade e realize a reproduo da forma apropriada. Por 157 exemplo:</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>Quando a atividade sai do modo de PIP e volta tela inteira, o 173 sistema retoma a atividade e chama o mtodo <code>onResume()</code>.</p> 174 175 <h2 id="single_playback">Usar uma nica atividade de reproduo para 176 imagem em imagem</h2> 177 178 <p>Ao navegar pelo contedo 179 da tela principal de seu aplicativo, um usurio pode selecionar um novo vdeo enquanto uma atividade de reproduo de vdeo estiver em modo de PIP. Reproduza o novo 180 vdeo na atividade de reproduo existente em modo de tela cheia em vez de 181 lanar uma nova atividade que pode confundir o usurio.</p> 182 183 <p>Para que uma nica atividade seja usada para solicitaes de reproduo de vdeo e 184 com o modo de PIP ativado ou desativado, conforme necessrio, configure o 185 <code>android:launchMode</code> da atividade para <code>singleTask</code> em seu manifesto. 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>Na atividade, modifique {@link android.app.Activity#onNewIntent 197 Activity.onNewIntent()} e processe o novo vdeo, interrompendo qualquer 198 reproduo existente, caso necessrio.</p> 199 200 <h2 id="best">Prticas recomendadas</h2> 201 202 <p>O PIP destinado a atividades que reproduzem vdeos em tela inteira. Ao passar 203 a atividade para o modo de PIP, evite mostrar qualquer coisa que no seja o contedo do vdeo. 204 Rastreie quando a atividade entrar no modo de PIP e oculte os elementos de IU, conforme descrito 205 em <a href="#handling_ui">Lidar com a interface durante o modo de imagem em imagem</a>.</p> 206 207 <p>Como a janela do PIP mostrada como uma janela flutuante no canto da 208 tela, voc deve evitar exibir informaes essenciais em qualquer rea 209 da janela principal que possa ser ocultada pela janela do PIP.</p> 210 211 <p>Quando uma atividade est no modo de PIP, ela no recebe foco de entrada por padro. Para 212 receber eventos de entrada no modo de PIP, use 213 <code>MediaSession.setMediaButtonReceiver()</code>.</p> 214