En el modo de ventanas avanzado, la escena principal se compone de varios paneles de apps interactivos y visibles de forma simultánea, en lugar de una actividad principal específica. El modo de ventanas avanzado usa una versión en blanco de una actividad de la pantalla principal para ser una barrera de visibilidad para las tareas multiventana.
Si bien el asistente de configuración (SUW) suele considerarse una tarea para la casa, te recomendamos que lo configures como parte de un panel para crear experiencias de Home más coherentes y confiables.
Cómo configurar la barrera de visibilidad de la casa
Confirma que la actividad de barrera de visibilidad de la casa sea una actividad de la casa que reconoce el inicio directo y que tiene una prioridad más alta para el filtro de intents de la casa que la actividad de la SUW.
Para obtener más información, consulta la plataforma de referencia en el paquete StubCarLauncher.
Te recomendamos que incluyas este paquete en tus compilaciones y que lo instales para todos los usuarios.
Cómo configurar el panel de la SUW
Te recomendamos que coloques la SUW en un panel exclusivo para controlar condiciones únicas y permitir una colocación exclusiva fuera de la tarea raíz predeterminada. Puedes configurar los límites y las capas de este panel.
Para que la SUW no quede obstruida, te recomendamos que la coloques en una capa relativamente alta. Este panel debe mostrar y ocultar los eventos del sistema de _System_EnterSuwEvent y _System_ExitSuwEvent, respectivamente.
Considera esta configuración de muestra:
<TaskPanel id="suw_panel" defaultVariant="@id/closed" displayId="0" controller="@xml/suw_panel_controller">
<TaskBehavior newTaskLaunchPolicy="REPARENT_TO_SOURCE"/>
<Variant id="@+id/base">
<Layer layer="@integer/suw_panel_layer"/>
<Bounds left="0" top="0" width="100%" height="100%" />
<Background color="@color/suw_panel_background_color" />
</Variant>
<Variant id="@+id/opened" parent="@id/base">
<Visibility isVisible="true"/>
</Variant>
<Variant id="@+id/closed" parent="@id/base">
<Visibility isVisible="false"/>
</Variant>
<Transitions>
<Transition onEvent="_System_TaskOpenEvent" onEventTokens="panelId=suw_panel" toVariant="@id/opened"/>
<Transition onEvent="_System_TaskPanelEmptyEvent" onEventTokens="panelId=suw_panel" toVariant="@id/closed"/>
<Transition onEvent="_System_EnterSuwEvent" toVariant="@id/opened"/>
<Transition onEvent="_System_ExitSuwEvent" toVariant="@id/closed"/>
</Transitions>
</TaskPanel>
...
<Controller id="suw_panel_controller">
<ControllerName>
com.android.systemui.car.wm.scalableui.panel.controller.SetupPanelController
</ControllerName>
<PersistentPackage>com.android.car.mysetuppackage</PersistentPackage>
</Controller>
Para alinearse con la app típica de la SUW, si el panel de la SUW se vuelve invisible mientras se realiza la configuración, el controlador envía un indicador de inicio explícito a la actividad de la SUW para anunciar que la SUW está oculta.
Esto aborda los casos en los que SUW sabía que el usuario intentaba ocultar SUW consumiendo la intención de inicio, pero sin tener acceso al indicador de inicio del sistema.
Si tienes diferentes expectativas para el diseño de la SUW, puedes implementar el comportamiento preferido reemplazando SetupPanelController por un controlador personalizado.