1 page.title=Modo Picture-in-picture 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>En este documento</h2> 11 <ol> 12 <li><a href="#declaring">Declarar que la actividad permite 13 el modo Picture-in-Picture</a></li> 14 <li><a href="#pip_button">Cambiar la actividad al modo Picture-in-picture</a> 15 </li> 16 <li><a href="#handling_ui">Gestionar las IU durante el modo Picture-in-picture</a> 17 </li> 18 <li><a href="#continuing_playback">Continuar la reproduccin de video durante 19 el modo Picture-in-picture</a></li> 20 <li><a href="#single_playback">Usar una nica actividad de reproduccin para 21 el modo Picture-in-picture</a></li> 22 <li><a href="#best">Prcticas recomendadas</a></li> 23 </ol> 24 25 <h2>Consulta tambin</h2> 26 <ol> 27 <li><a href="{@docRoot}preview/features/multi-window.html">Compatibilidad con 28 ventanas mltiples</a></li> 29 </ol> 30 31 </div> 32 </div> 33 34 <p>Con Android N, los usuarios de Android TV ahora pueden ver un video 35 en una ventana fija que se ubica en una esquina de la pantalla mientras navegan dentro de 36 aplicaciones. El modo picture-in-picture (PIP) permite que las aplicaciones reproduzcan un video 37 en una ventana fija mientras se lleva a cabo otra actividad 38 en el fondo. La ventana de PIP les permite a los usuarios realizar mltiples tareas mientras usan tu aplicacin, lo cual les permite 39 ser ms productivos.</p> 40 41 <p>Tu aplicacin puede decidir cundo activar el modo PIP. Aqu te mostramos algunos ejemplos de 42 situaciones en las que se podra usar el modo PIP:</p> 43 44 <ul> 45 <li>Tu aplicacin puede pasar un video al modo PIP cuando el usuario retrocede 46 en la navegacin desde el video para explorar otro contenido.</li> 47 <li>Tambin puede hacerlo mientras el usuario est viendo el final 48 de un episodio de contenido. La pantalla principal muestra informacin promocional 49 o de resumen sobre el prximo captulo de la serie.</li> 50 <li>Tu aplicacin puede brindarles a los usuarios una forma de poner en cola otro contenido mientras 51 miran un video. El video contina reproducindose en modo PIP mientras la pantalla 52 principal muestra una actividad de seleccin de contenido.</li> 53 </ul> 54 55 <p>La ventana de PIP es de 240x135 dp y se muestra en la capa delantera en una de las 56 cuatro esquinas de la pantalla que el sistema elige. El usuario puede acceder a un men de 57 PIP que le permite activar o desactivar la ventana de PIP a pantalla completa o cerrarla 58 presionando el botn <b>Home</b> en el control remoto. Si se comienza a reproducir 59 otro video en la pantalla principal, la ventana de PIP se cierra 60 automticamente. Los usuarios tambin pueden cerrar la ventana de PIP desde Recents.</p> 61 62 <img src="{@docRoot}images/android-7.0/pip-active.png" /> 63 <p class="img-caption"><strong>Imagen 1.</strong> Un video picture-in-picture 64 visible en una esquina de la pantalla mientras el usuario explora contenido 65 en la pantalla principal.</p> 66 67 <p>El modo PIP aprovecha las API de ventanas mltiples disponibles en Android N para 68 brindar la ventana superpuesta fija de video. Para agregarle el modo PIP a tu aplicacin, debes 69 registrar las actividades que permitan este modo, cambiar la actividad al modo PIP segn 70 sea necesario y asegurarte de que los elementos de IU se oculten y que la reproduccin de video contine mientras 71 la actividad se encuentra en modo PIP.</p> 72 73 <h2 id="declaring">Declarar que la actividad permite el modo picture-in-picture</h2> 74 75 <p>De forma predeterminada, el sistema no permite el modo PIP para aplicaciones automticamente. 76 Si deseas permitir este modo en tu aplicaciones, registra la actividad 77 de video en tu manifiesto configurando 78 <code>android:supportsPictureInPicture</code> y 79 <code>android:resizeableActivity</code> en <code>true</code>. Adems, debes especificar 80 que tu actividad gestiona los cambios de configuracin de la presentacin para que la actividad 81 no se reinicie cuando ocurran cambios de presentacin durante las transiciones en el modo 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>Cuando registres la actividad, ten en cuenta que, en el modo PIP, la 93 actividad se muestra en una ventana superpuesta pequea en una pantalla de TV. Las actividades de reproduccin 94 de videos con IU mnimas brindan la mejor experiencia de usuario. Las actividades que 95 incluyen elementos de IU pequeos podran no brindar una buena experiencia de usuario 96 cuando se cambian al modo PIP, porque los usuarios no podrn ver los detalles de los elementos de IU 97 en la ventana PIP.</p> 98 99 <h2 id="pip_button">Cambiar la actividad al modo Picture-in-picture</h2> 100 101 Cuando necesites cambiar la actividad al modo PIP, llama a 102 <code>Activity.enterPictureInPictureMode()</code>. En el siguiente ejemplo, se 103 cambia al modo PIP cuando el usuario selecciona un botn PIP especial en una barra 104 de control de medios:</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>Agregar un botn PIP a la barra de control de medios le permite al usuario cambiar 117 fcilmente al modo PIP y seguir controlando la reproduccin de video.</p> 118 119 <img src="{@docRoot}images/android-7.0/pip-button.png" /> 120 <p class="img-caption"><strong>Imagen 1.</strong> Un botn 121 PIP en una barra de control de medios.</p> 122 123 <p>Android N incluye una nueva clase 124 <code>PlaybackControlsRow.PictureInPictureAction</code> que define 125 las acciones de PIP de la barra de control y usa el cono PIP.</p> 126 127 <h2 id="handling_ui">Gestionar las IU durante el modo picture-in-picture</h2> 128 129 <p>Cuando la actividad ingresa al modo PIP, esta solo debera mostrar la reproduccin 130 de video. Debes quitar los elementos de IU antes de que la actividad ingrese al modo PIP 131 y volver a mostrarlos cuando la actividad vuelva al modo de pantalla completa. 132 Anula <code>Activity.onPictureInPictureModeChanged()</code> o 133 <code>Fragment.onPictureInPictureModeChanged()</code> y habilita 134 o inhabilita los elementos de IU segn sea necesario, por ejemplo:</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 la reproduccin de video durante 150 el modo Picture-in-picture</h2> 151 152 <p>Cuando la actividad cambia al modo PIP, el sistema considera que se encuentra en 153 pausa y llama al mtodo <code>onPause()</code> de la actividad. La reproduccin 154 de video no debera pausarse y debera continuar si la actividad se 155 pausa debido al modo PIP. Busca el modo PIP en el mtodo 156 <code>onPause()</code> de la actividad y controla la reproduccin segn corresponda, por 157 ejemplo:</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>Cuando la actividad sale del modo PIP y vuelve al modo de pantalla completa, el 173 sistema reinicia la actividad y llama al mtodo <code>onResume()</code>.</p> 174 175 <h2 id="single_playback">Usar una nica actividad de reproduccin para 176 el modo Picture-in-picture</h2> 177 178 <p>En tu aplicacin, un usuario puede seleccionar un nuevo video cuando busca contenido en la 179 pantalla principal, mientras una actividad de reproduccin de video est en modo PIP. Reproduce el nuevo 180 video en la actividad de reproduccin actual en modo de pantalla completa, en lugar de 181 iniciar una nueva actividad que podra confundir al usuario.</p> 182 183 <p>A fin de garantizar que se utilice una nica actividad para las solicitudes de reproduccin de video y que esta 184 ingrese en el modo PIP o salga de este cuando sea necesario, configura el 185 <code>android:launchMode</code> de la actividad en <code>singleTask</code>, en el manifiesto: 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>En tu actividad, anula {@link android.app.Activity#onNewIntent 197 Activity.onNewIntent()} y administra el nuevo video, deteniendo cualquier reproduccin 198 de video actual si es necesario.</p> 199 200 <h2 id="best">Prcticas recomendadas</h2> 201 202 <p>El modo PIP est diseado para actividades que reproducen un video en pantalla completa. Cuando cambies la 203 actividad al modo PIP, evita que se muestre cualquier elemento que no sea el contenido del video. 204 Rastrea el cambio a modo PIP de la actividad y oculta los elementos de IU, como se explica 205 en la seccin <a href="#handling_ui">Gestionar las IU durante el modo picture-in-picture</a>.</p> 206 207 <p>Debido a que la ventana de PIP se muestra como una ventana flotante en una 208 esquina de la pantalla, debes evitar mostrar informacin importante en la pantalla principal 209 en cualquier rea que pueda quedar oculta detrs de la ventana de PIP.</p> 210 211 <p>Cuando una actividad se encuentra en modo PIP, de forma predeterminada, no tiene focalizacin en las entradas. Para 212 recibir eventos de entradas durante este modo, usa 213 <code>MediaSession.setMediaButtonReceiver()</code>.</p> 214