Configura interrupciones en tiempo real
Las interrupciones en tiempo real son un conjunto de funciones que alertan a los usuarios sobre interrupciones en su ruta y les permiten informar y verificar las interrupciones que encuentran. Algunos ejemplos de interrupciones son los accidentes de vehículos, la congestión del tráfico, la presencia de policías y radares de velocidad, las obras de construcción, los carriles cerrados y ciertas condiciones climáticas. En esta página, se explican las funciones de interrupción en tiempo real y sus opciones de configuración, incluidas las consideraciones para las apps que usan IU de navegación personalizadas.
Funciones de interrupción en tiempo real
El SDK de Navigation incluye las siguientes funciones de interrupción en tiempo real como parte de la experiencia de navegación principal:- Llamadas interactivas de interrupción en las rutas.
- Alertas automáticas de interrupciones con votación durante la navegación activa.
- Informes de interrupciones durante la navegación activa.
Estas funciones se pueden configurar y están habilitadas de forma predeterminada. En las siguientes secciones, se proporciona más información sobre las funciones y las opciones de configuración disponibles.
Llamadas de interrupción interactivas en las rutas
Cuando una app muestra una ruta, ya sea en un resumen de la ruta o durante la navegación activa, las interrupciones actuales aparecen como leyendas a lo largo de la ruta. Cuando habilitas la capa de tráfico, también aparecen en el mapa las interrupciones fuera de la ruta. Los textos destacados incluyen un ícono que indica el tipo de interrupción.
Puedes controlar la visualización de los textos destacados de interrupciones en las rutas con setTrafficPromptsEnabled, que también controla la visualización de alertas automáticas cuando un usuario se acerca a una interrupción.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Muestra detalles de las interrupciones cuando un usuario presiona un texto destacado
Si presionas un cuadro de texto de interrupción, se abrirá una tarjeta de información con más detalles. Esto se aplica tanto a las leyendas en ruta como fuera de ruta, aunque las leyendas fuera de ruta solo aparecen si la capa de tráfico está habilitada. En la tarjeta, se muestra el tipo de interrupción, la hora en que se informó por última vez y, a veces, una opción para votar si la interrupción sigue presente. El tipo de tarjeta de información y sus opciones de configuración varían según si el usuario está en navegación activa.
Tarjetas de información destacada en los resúmenes de la ruta, antes de iniciar la navegación activa
Antes de iniciar la navegación activa, los usuarios pueden presionar un cuadro de texto en la ruta o fuera de ella en el mapa o en el resumen de la ruta para abrir una tarjeta de información. Los textos destacados fuera de ruta requieren que se habilite la capa de tráfico. La tarjeta de información proporciona más detalles sobre la interrupción.
Puedes controlar la capacidad de los usuarios de presionar los textos destacados de interrupciones en los resúmenes de la ruta para mostrar más información con setTrafficIncidentCardsEnabled.
// Using the SupportNavigationFragment mNavFragment.setTrafficIncidentCardsEnabled(true); // Using the NavigationView navigationView.setTrafficIncidentCardsEnabled(true);
Tarjetas de información de texto destacado durante la navegación activa
Durante la navegación activa, los usuarios pueden presionar un cuadro de texto de interrupción en la ruta o fuera de ella para abrir una tarjeta de información. En la tarjeta, se muestra el tipo de interrupción y la última hora en que se informó, y se incluyen botones para que los usuarios voten si la interrupción aún está presente.
La votación está disponible para las interrupciones en la ruta y fuera de ella en un radio de 5 km del usuario, excepto las rutas cerradas. Google procesa estos votos para determinar si debe seguir mostrando la interrupción. Es posible que los votos también aparezcan en el mapa para otros usuarios de Google Maps y del SDK de Navigation.
Puedes controlar la visualización y la posibilidad de presionar los textos destacados de interrupciones durante la navegación activa con setTrafficPromptsEnabled, que también controla la visualización de textos destacados a lo largo de las rutas y la visualización de alertas automáticas cuando un usuario se acerca a una interrupción.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Alertas de interrupciones automatizadas con votación durante la navegación activa
Durante la navegación activa, cuando un usuario se acerca a una interrupción en una ruta, aparece un mensaje con información sobre la interrupción y botones para votar si la interrupción aún está presente. Google procesa los votos que envían los usuarios y puede mostrarlos en el mapa para otros usuarios del SDK de Navigation y de Google Maps, así como usarlos para determinar si se debe seguir mostrando la interrupción.
Puedes configurar la visualización de mensajes de alerta durante la navegación activa con
setTrafficPromptsEnabled,
que también controla la visualización
de llamadas a lo largo de las rutas.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Informes de interrupciones durante la navegación activa
Durante el modo de navegación activa, aparece un botón en la IU de navegación que permite a los usuarios informar nuevas interrupciones en su ruta. Cuando un usuario presiona el botón, aparece un menú con los tipos de interrupciones disponibles para informar. Google procesa los avisos que envían los usuarios y puede mostrarlos en el mapa para otros usuarios de Google Maps y del SDK de Navigation.
Si se informa una ruta cerrada, es posible que se presente una ruta alternativa para evitar el tramo bloqueado, lo que le pedirá al usuario que confirme o rechace el cambio de ruta. Esta función está sujeta a disponibilidad.
Cómo mostrar u ocultar el botón de informes estándar
Puedes configurar la visibilidad del botón de informes estándar durante la navegación activa con
setReportIncidentButtonEnabled
.
// Enables the incident reporting button to show in situations where incident // reporting is possible. // Using the SupportNavigationFragment mNavFragment.setReportIncidentButtonEnabled(true); // Using the NavigationView navigationView.setReportIncidentButtonEnabled(true);
Agrega un botón de informes personalizados
En lugar del botón estándar para informar interrupciones, puedes agregar un botón de informe personalizado a la IU de navegación. Cuando el usuario hace clic en el botón personalizado, puedes activar la visualización del menú de informes llamando al método showReportIncidentsPanel. Antes de agregar un botón de informe personalizado, llama a isIncidentReportingAvailable para verificar que la app esté en navegación activa y que el usuario se encuentre en un país donde los informes estén habilitados. Si alguna de estas condiciones no se cumple,
no aparecerá el menú de informes.
Button customReportIncidentButton = findViewById(R.id.custom_reporting_button); // Check if reporting is available before displaying your button customReportIncidentButton.setVisibility( navigationView.isReportingAvailable ? View.VISIBLE : View.GONE); // Trigger the reporting flow if the button is clicked customReportIncidentButton.setOnClickListener(v -> navigationView.showReportIncidentsPanel());
Trabaja con IU de navegación personalizadas
Si tu implementación del SDK de Navigation incluye elementos de la IU personalizados, debes tener en cuenta los elementos de interrupción en tiempo real para evitar conflictos.
Posicionamiento del botón de denuncia
De forma predeterminada, el botón para informar interrupciones se encuentra en la esquina inferior o final del mapa, en el lado derecho para los idiomas que se leen de izquierda a derecha y en el lado izquierdo para los idiomas que se leen de derecha a izquierda. Si necesitas mover el botón de informes para dejar espacio para los elementos de la IU personalizados, agrega un control personalizadoBOTTOM_END_BELOW o FOOTER, que desplazará la posición del botón hacia arriba en la pantalla. Si colocas tus propias IU personalizadas dentro de los controles personalizados,
también te aseguras de que las indicaciones que muestra el SDK de Navigation se superpongan correctamente sobre tus
elementos de la IU personalizados mientras se muestran. Si no puedes usar controles personalizados, utiliza la API de Prompt Visibility para administrar posibles conflictos de la IU.
API de Prompt Visibility (experimental)
La API de Prompt Visibility te ayuda a evitar conflictos entre los elementos de la IU que genera el SDK de Navigation y tus propios elementos de la IU personalizados. Para ello, agrega un objeto de escucha que reciba una devolución de llamada antes de que aparezca un elemento de la IU del SDK de Navigation y en cuanto se quite el elemento. Puedes recibir devoluciones de llamada para los elementos de interrupción en tiempo real, incluidas las tarjetas de información, las indicaciones y el menú de informes de interrupciones, así como para otras notificaciones que genera el SDK de Navigation.// Sample listener val listener: PromptVisibilityChangedListener = { isVisible -> if (isVisible) { customFab.visibility = false customFooter.visibility = false moveSomeOtherThingsAround() } else { customFab.visibility = true customFooter.visibility = true moveSomeThingsBackToWhereTheyWereBefore() } } // Inside onCreate() navigationView.addPromptVisibilityChangedListener(listener) // Inside onDestroy() navigationView.removePromptVisibilityChangedListener(listener)