Compatibilidad con Multiventana

En Android 7.0 y versiones posteriores, los dispositivos pueden mostrar varias apps de forma simultánea con el modo multiventana. Android admite tres configuraciones multiventana:

  • Formato libre: Permite que los usuarios cambien el tamaño de los paneles de actividades de forma dinámica y que tengan más de dos apps visibles en la pantalla. Para el modo de ventanas de escritorio, los usuarios pueden crear ventanas de formato libre en una computadora que ofrece interacciones de estilo de escritorio.
  • Pantalla dividida: Es la implementación multiventana predeterminada, que proporciona dos paneles de actividades en los que los usuarios pueden colocar apps.
  • Pantalla en pantalla (PiP): Permite que los dispositivos que ejecutan Android reproduzcan contenido de video en una ventana pequeña mientras el usuario interactúa con otras apps.

Requisitos de dispositivos multiventana

La compatibilidad con el modo multiventana está habilitada de forma predeterminada en Android 7.0 y versiones posteriores. Para inhabilitarla, establece la marca config_supportsMultiWindow en false en el archivo config.xml de tu dispositivo.

El modo multiventana está inhabilitado de forma predeterminada en todos los dispositivos con poca RAM (dispositivos que declaran ActivityManager.isLowRam). Los dispositivos con poca RAM ignoran el valor de la marca config_supportsMultiWindow.

Formato libre

El modo de ventanas de formato libre permite que el usuario cree ventanas que se puedan cambiar de tamaño libremente. El modo de ventanas de formato libre es un requisito previo para el modo de ventanas de escritorio. Los requisitos del dispositivo para habilitar el modo de ventanas de formato libre son los siguientes:

  • Habilita la marca config_supportsMultiWindow.
  • Habilita la administración de ventanas de formato libre de una de las siguientes maneras:
    • Habilita la marca config_freeformWindowManagement en config.xml:
      <feature name="android.software.freeform_window_management" />
    • Incluye lo siguiente en el archivo makefile del dispositivo:
      PRODUCT_COPY_FILES += \
      frameworks/native/data/etc/android.software.freeform_window_management.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/android.software.freeform_window_management.xml

En Android 16, los OEMs pueden admitir el modo de ventanas de escritorio en sus dispositivos para una configuración multiventana de formato libre con Habilitar el modo de ventanas de escritorio.

Modo de ventanas de escritorio

El modo de ventanas de escritorio proporciona un espacio de trabajo para realizar varias tareas a la vez en pantallas grandes, creado sobre ventanas de formato libre. El espacio de trabajo existe junto con la pantalla completa, con más funciones y comportamientos de la IU que le brindan al usuario una experiencia de multitarea más flexible:

  • Interacción con el teclado o el mouse: Admite interacciones táctiles y con el teclado o el mouse.
  • Ventanas de formato libre: Ejecuta apps en ventanas móviles y de tamaño ajustable con barras de subtítulos y controles de ventanas.
  • Barra de tareas mejorada: Proporciona acceso fácil a las apps en ejecución y fijas.
  • Optimización de pantallas externas: Transforma los monitores conectados en entornos de escritorio para dispositivos compatibles.
  • Escritorios virtuales: Permite que los usuarios organicen apps en varios espacios de trabajo.

Cumple con los siguientes requisitos previos para configurar un dispositivo para el modo de ventanas de escritorio:

  • Habilita las siguientes marcas:
  • La IU del sistema requiere una pantalla de al menos 600 dp de ancho. Es posible que el modo de ventanas de escritorio no funcione como se espera en pantallas más pequeñas.
  • El dispositivo no debe ser un dispositivo con poca RAM. ActivityManager.isLowRam debe mostrar false, ya que los dispositivos con poca RAM no son aptos para ninguna función multiventana.

En la siguiente tabla, se enumeran las configuraciones en las que se puede configurar un dispositivo para el modo de ventanas de escritorio, según el tamaño de la pantalla y el uso previsto del dispositivo:

Modo Dispositivo portátil solo en pantalla completa Dispositivo portátil en pantalla completa que se proyecta en una pantalla conectada Pantalla grande en pantalla completa que se extiende a una pantalla conectada Pantalla grande en modo de ventanas de escritorio
Factor de forma de ejemplo Teléfono portátil Teléfono portátil que admite HDMI a una pantalla externa Tablet que admite HDMI a una pantalla externa Tablet con teclado que admite HDMI a una pantalla externa
Experiencia de pantalla interna Se admiten pantalla completa, pantalla dividida, PiP y formato libre que no sea de escritorio Se admiten pantalla completa, pantalla dividida y PiP Se admite el modo de ventanas de escritorio en pantalla completa, pantalla dividida y PiP a través de escritorios separados El modo de ventanas de escritorio es el modo de ventanas predeterminado (se admiten escritorios separados); los usuarios pueden ingresar al modo de ventanas de escritorio en pantalla completa o táctil a través de escritorios separados
Experiencia de pantalla conectada Solo duplicación de la pantalla interna Modo de ventanas de escritorio solo en pantallas conectadas El modo de ventanas de escritorio extiende los escritorios; disponible en pantallas internas El modo de ventanas de escritorio extiende los escritorios; disponible en pantallas internas
Configuración
config_supportsMultiWindow true true true true
config_freeformWindowManagement true true true true
config_isDesktopModeSupported false true true true
config_canInternalDisplayHostDesktops Omitida false true true
config_enterDesktopByDefaultOnFreeformDisplay Omitida false false true

config_isDesktopModeSupported

La marca de superposición de configuración config_isDesktopModeSupported es la marca de nivel superior para habilitar el modo de ventanas de escritorio. Si no está habilitada, se ignoran todos los demás parámetros de configuración. Establécela en true en config.xml:

<!-- Globally enable Desktop windowing logic -->
    <bool name="config_isDesktopModeSupported">true</bool>

Cuando config_isDesktopModeSupported es true, el sistema trata automáticamente las pantallas externas aptas (como las conectadas por DisplayPort o HDMI) como candidatas para el modo de ventanas de escritorio. El Administrador de ventanas debe considerar que la pantalla es apta (al menos pública y confiable, consulta Modo de ventanas de escritorio). De forma predeterminada, el sistema intenta iniciar tareas en modo de formato libre en estas pantallas.

config_canInternalDisplayHostDesktops

La marca de superposición de configuración config_canInternalDisplayHostDesktops habilita el modo de ventanas de escritorio en la pantalla interna del dispositivo. Establécela en true en config.xml:

<!-- Allow the primary internal display to host desktop sessions -->
    <bool name="config_canInternalDisplayHostDesktops">true</bool>

El modo de ventanas de escritorio funciona mejor en un dispositivo de pantalla grande, como una tablet, en comparación con un teléfono portátil más pequeño Si no está habilitado, el modo de ventanas de escritorio solo se admite en una pantalla externa (siempre que el dispositivo admita HDMI).

config_enterDesktopByDefaultOnFreeformDisplay

La marca de superposición de configuración config_enterDesktopByDefaultOnFreeformDisplay establece el modo de ventanas de escritorio como el modo de ventanas predeterminado en la pantalla interna del dispositivo. Si no está habilitado, el modo de ventanas predeterminado es la pantalla completa, con los escritorios coexistiendo. Establécela en true en config.xml:

<!-- Enable Desktop windowing as the default windowing mode on the internal display -->
    <bool name="config_enterDesktopByDefaultOnFreeformDisplay">true</bool>

Habilitar límites de tareas

Para configurar la cantidad máxima de tareas admitidas en el modo de ventanas de escritorio, establece la marca de superposición de configuración config_maxDesktopWindowingActiveTasks en config.xml en la cantidad máxima de tareas admitidas. Para admitir una cantidad ilimitada de tareas, establece el valor de la marca en 0:

<!-- Maximum number of tasks supported in desktop windowing -->
      <integer name="config_maxDesktopWindowingActiveTasks">4</integer>

Habilitar límites de escritorio

Para configurar la cantidad máxima de escritorios virtuales admitidos en el modo de ventanas de escritorio, establece la marca de superposición de configuración config_maxDesktopWindowingDesks en config.xml en la cantidad máxima de escritorios admitidos. Para admitir una cantidad ilimitada de escritorios, establece el valor de la marca en 0:

<!-- Maximum number of virtual desks supported in desktop windowing -->
      <integer name="config_maxDesktopWindowingDesks">4</integer>

Pantalla dividida

La experiencia predeterminada del modo multiventana es el modo de pantalla dividida, en el que la IU del sistema se divide por la mitad del dispositivo en orientación vertical u horizontal. Los usuarios pueden cambiar el tamaño de la ventana arrastrando la línea divisoria de lado a lado o de arriba a abajo, según la orientación del dispositivo.

Después de habilitar la pantalla dividida, los fabricantes de dispositivos pueden habilitar el formato libre o el modo PiP.

Android 8.0 y versiones posteriores mejoran la pantalla dividida comprimiendo el selector cuando el usuario presiona Inicio. Para obtener detalles de la implementación, consulta Interacciones con pantalla dividida.

Pantalla en pantalla

Después de habilitar el modo multiventana con la config_supportsMultiWindow marca, los fabricantes de dispositivos pueden admitir pantalla en pantalla, que permite a los usuarios mirar videos mientras navegan por otras actividades. Si bien esta función está orientada a dispositivos Android TV, es posible que otros tipos de dispositivos la admitan.

Para admitir el modo PiP, habilita la PackageManager#FEATURE_PICTURE_IN_PICTURE función del sistema en /android/frameworks/base/core/java/android/content/pm/PackageManager.java.

Para obtener más detalles sobre la implementación de PiP para dispositivos que ejecutan Android 8.0 y versiones posteriores, consulta Pantalla en pantalla.

IU del sistema

Admite todas las IUs del sistema estándar según la Verificación del modo multiventana.

Aplicaciones

Para admitir el modo multiventana para apps precargadas, consulta Cómo admitir el modo multiventana.

Validación

Para validar tu implementación del modo multiventana, ejecuta las pruebas CTS relacionadas y sigue la Verificación del modo multiventana.

Versión de Android Prueba CTS
7.0 /platform/cts/hostsidetests/services/activitymanager/src/android/server/cts
8.0 /platform/cts/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts
9.0 /platform/cts/tests/framework/base/activitymanager/src/android/server/am
Android 10 y versiones posteriores /platform/cts/tests/framework/base/windowmanager/src/android/server/wm