compatibilidad Con Picture-in-picture

Android 8.0 (nivel de API 26) permite que las actividades se inicien en modo picture-in-picture (PIP). PIP es un tipo especial de modo multi-ventana utilizado principalmente para video playback.It permite al usuario ver un video en una pequeña ventana anclada a una esquina de la pantalla mientras navega entre aplicaciones o navega por contenido en la pantalla principal.

por desgracia, su navegador no es compatible con vídeo HTML5. ¡Está bien! Aún puede descargar el video y verlo con un reproductor de video.,

PIP aprovecha las API de varias ventanas disponibles en Android 7.0 para proporcionar la ventana de superposición de vídeo anclado. Para agregar PIP a tu app, necesitas registrar tus actividades que admitan PIP, cambiar tu actividad al modo PIP según sea necesario y asegurarte de que los elementos de la interfaz de usuario estén ocultos y la reproducción de vídeo continúe cuando la actividad esté en modo PIP.

la ventana PIP aparece en la capa superior de la pantalla, en una esquina elegida por el sistema. Puede arrastrar la ventana de imágenes incrustadas a otra ubicación., Al tocar en la ventana aparecen dos controles especiales: un interruptor de pantalla completa (en el Centro de la ventana) y un botón Cerrar (una «X» en la esquina superior derecha).

tu app controla cuando la actividad actual entra en modo PIP. Estos son algunos ejemplos:

  • una actividad puede entrar en modo PIP cuando el usuario toca el botón Inicio o recentsbutton para elegir otra aplicación. (Así es como Google Maps continúa mostrando direcciones mientras que el usuario ejecuta otra actividad al mismo tiempo.)
  • Su aplicación puede mover un vídeo al modo PIP cuando el usuario navega de vuelta desde el vídeo para explorar otros contenidos.,
  • tu app puede cambiar un vídeo al modo PIP mientras un usuario mira el final de un episodio de contenido. La pantalla principal muestra información promocional o resumida sobre el siguiente episodio de la serie.
  • su aplicación puede proporcionar una forma para que los usuarios pongan en cola contenido adicional mientras ven un video. El vídeo continúa reproduciéndose en modo PIP mientras que la pantalla principal muestra una actividad de selección de contenido.

declarando soporte de imagen en imagen

de forma predeterminada, el sistema no admite automáticamente PIP para aplicaciones.,Si quieres admitir PIP en tu app, registra tu videoactividad en tu manifiesto configurandoandroid:supportsPictureInPicture en true. Además, especifique que su actividad maneja los cambios de configuración de diseño para que su actividad no se reinicie cuando se produzcan cambios de diseño durante las transiciones del modo PIP.

cambiar su actividad a picture-in-picture

para entrar en el modo picture-in-picture, una actividad debe llamar aenterPictureInPictureMode()., Por ejemplo, el siguiente código cambia una actividad al modo PIP cuando el usuario hace clic en un botón dedicado en la interfaz de usuario de la aplicación:

es posible que desee incluir lógica que cambie una actividad al modo PIP en lugar de entrar en el fondo. Por ejemplo, Google Maps cambia al modo PIP si el usuario presiona el botón Inicio o recentsbutton mientras la aplicación está navegando., Puede capturar este caso anulando onUserLeaveHint():

manejando la interfaz de usuario durante picture-in-picture

Cuando la actividad entra o sale del modo picture-in-picture, el sistema llama aActivity.onPictureInPictureModeChanged()oFragment.onPictureInPictureModeChanged().

debe anular estas devoluciones de llamada para volver a dibujar los elementos de la IU de la actividad. Tenga en cuenta que el modo inPIP su actividad se muestra en una pequeña ventana. Los usuarios no pueden interactuar con los elementos de la interfaz de usuario cuando el modo inPIP y los detalles de los pequeños elementos de la interfaz de usuario pueden ser difíciles de ver. Las actividades de reproducción de Video con una interfaz de usuario mínima proporcionan la mejor experiencia de usuario., La actividad solo debe mostrar controles de reproducción de vídeo. Elimina otros elementos de la interfaz de usuario antes de que tu actividad entre en PIP y restáuralos cuando tu actividad vuelva a estar a pantalla completa:

agregar controles

la ventana PIP puede mostrar controles cuando el usuario abre el menú de la ventana (tocando la ventana en un dispositivo móvil o seleccionando el menú del control remoto del televisor.)

si una aplicación tiene una sesión de activemedia, aparecerán los controles reproducir, pausar, siguiente y anterior.,

también puede especificar acciones personalizadas explícitamente compilandoPictureInPictureParams con PictureInPictureParams.Builder.setActions() antes de ingresar al modo PIP, y pase los parámetros cuando ingrese al modo PIP usandoenterPictureInPictureMode(android.app.PictureInPictureParams) osetPictureInPictureParams(android.app.PictureInPictureParams). Si intentas añadir más degetMaxNumPictureInPictureActions() solo obtendrás el número máximo.

continuar la reproducción de vídeo mientras está en picture-in-picture

Cuando su actividad cambia a PIP, el sistema coloca la actividad en el estado causado y llama al método onPause() de la actividad., La reproducción de vídeo no debe pausarse y debe continuarse reproduciendo si la actividad está pausada mientras está en modo PIP.

en Android 7.0 y versiones posteriores, debes pausar y reanudar la reproducción de vídeo cuando el sistema llame a onStop() yonStart()de tu actividad. Al hacer esto, puede evitar tener que verificar si su aplicación está en modo PIP enonPause() y continuar explícitamente la reproducción.,

Si tiene que pausar la reproducción en su implementación onPause(), verifique el modo PIP llamando a isInPictureInPictureMode() y maneje la reproducción adecuadamente, por ejemplo:

cuando su actividad salga del modo PIP de nuevo al modo de pantalla completa, el sistema reanuda su actividad y llama a suonResume().

usando una única actividad de reproducción para imagen en imagen

en tu app, un usuario puede seleccionar un nuevo vídeo al buscar contenido en la pantalla principal, mientras que una actividad de reproducción de vídeo está en modo PIP., Reproducir el nuevo vídeo en la actividad de reproducción existente en modo de pantalla completa, en lugar de lanzar una nueva actividad que podría confundir al usuario.

para asegurarse de que una sola actividad se usa para solicitudes de reproducción de video y se cambia dentro o fuera del modo PIP según sea necesario, establezca elandroid:launchMode en singleTask en su manifiesto:

<activity android:name="VideoActivity" ... android:supportsPictureInPicture="true" android:launchMode="singleTask" ...

en su actividad, anule onNewIntent() y maneja el nuevo video, deteniendo cualquier reproducción de video existente si es necesario.

prácticas recomendadas

PIP puede deshabilitarse en dispositivos con poca RAM., Antes de que tu app use PIP, asegúrate de que está disponible llamando a hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE).

PIP está diseñado para actividades que reproducen videos a pantalla completa. Al cambiar su actividad al modo PIP, evite mostrar nada excepto contenido de video.Realice un seguimiento cuando su actividad entre en el modo PIP y oculte los elementos de la interfaz de usuario, como se describe en el manejo de la interfaz de usuario durante picture-in-picture.

Desde la ventana PIP se muestra como una ventana flotante en la esquina de thescreen, usted debe evitar mostrar información crítica en la principal screenin cualquier área que puede ser oscurecida por la ventana PIP.,

Cuando una actividad está en modo PIP, por defecto no obtiene el enfoque de entrada. Para recibir eventos de entrada mientras está en modo PIP, useMediaSession.setCallback(). Para obtener más información sobre el uso desetCallback() seeDisplayinga Now Playing Card.

Cuando la aplicación está en modo PIP, la reproducción de vídeo en la ventana PIP puede causar interferencias de estudio con otra aplicación, como una aplicación de reproductor de música o una aplicación de búsqueda de voz. Para evitar esto, solicite el enfoque de audio cuando comience a reproducir el video y gestione las notificaciones de cambio de enfoque de audio,como se describe en la gestión de AudioFocus., Si recibe una notificación de pérdida de enfoque de audio cuando está en modo PIP,pause o detenga la reproducción de video.

Cuando tu app esté a punto de ingresar PIP, ten en cuenta que solo la actividad superior ingresará imagen en imagen. En algunas situaciones, como en dispositivos multi-ventana, es posible que la actividad a continuación ahora se muestre y se vuelva visible de nuevo junto con la actividad PIP. Debe manejar este caso en consecuencia, incluyendo la actividad a continuación obteniendo una devolución de llamada onResume() o una devolución de llamada onPause(). También es posible que el usuario pueda interactuar con la actividad., Por ejemplo, si se muestra una actividad de Lista de vídeos y la actividad de reproducción de vídeo en modo PIP, el usuario puede seleccionar un nuevo vídeo de la lista y la actividad PIP debe actualizarse en consecuencia.

código de muestra adicional

para descargar una aplicación de muestra escrita en Android, consulte imagen en imagen Sample.To descargue una aplicación de muestra escrita en Kotlin, vea la imagen de Android en la muestra de imágenes (Kotlin).

Author: admin

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *