Configurer les perturbations en temps réel
Les perturbations en temps réel sont un ensemble de fonctionnalités qui alertent les utilisateurs sur les perturbations sur leur itinéraire et leur permettent de signaler et de vérifier les perturbations qu'ils rencontrent. Parmi les exemples de perturbations, citons les accidents de véhicules, les embouteillages, la présence de la police et de radars, les travaux, les fermetures de voies et certaines conditions météorologiques. Cette page explique les fonctionnalités de perturbation en temps réel et leurs options de configuration, y compris les considérations pour les applications qui utilisent des interfaces utilisateur de navigation personnalisées.
Fonctionnalités de perturbation en temps réel
Le SDK Navigation inclut les fonctionnalités de perturbation en temps réel suivantes dans l'expérience de navigation de base :- Légendes de perturbation interactives le long des itinéraires.
- Alertes de perturbation automatiques avec vote pendant la navigation active.
- Signalement des perturbations pendant la navigation active.
Ces fonctionnalités sont configurables et activées par défaut. Les sections suivantes fournissent plus d'informations sur les fonctionnalités et les options de configuration disponibles.
Légendes de perturbation interactives le long des itinéraires
Lorsqu'une application affiche un itinéraire, dans un aperçu de l'itinéraire ou pendant la navigation active, toutes les perturbations actuelles apparaissent sous forme de légendes le long de l'itinéraire. Les légendes incluent une icône qui indique le type de perturbation.
Vous pouvez contrôler l'affichage des légendes de perturbation le long des itinéraires à l'aide de setTrafficPromptsEnabled, qui contrôle également l'affichage des alertes automatiques lorsqu'un utilisateur approche d'une perturbation.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Afficher les détails de la perturbation lorsqu'un utilisateur appuie sur une légende
Les utilisateurs peuvent appuyer sur une légende pour afficher une fiche info contenant plus d'informations sur la perturbation, y compris son type, l'heure à laquelle elle a été signalée pour la dernière fois et, dans certains cas, une option permettant de voter pour indiquer si la perturbation est toujours présente. Deux types de fiches d'informations différents peuvent s'afficher, selon que l'utilisateur est en navigation active ou non. Les options de configuration varient pour chaque type.
Fiches info sur les légendes dans les aperçus de l'itinéraire, avant de démarrer la navigation active
Lorsqu'un utilisateur appuie sur une légende dans un aperçu d'itinéraire, avant de démarrer la navigation active, une fiche d'informations s'affiche avec plus d'informations sur la perturbation.
Vous pouvez contrôler la possibilité pour les utilisateurs d'appuyer sur les légendes de perturbation dans les aperçus d'itinéraire pour afficher plus
d'informations à l'aide
setTrafficIncidentCardsEnabled
.
// Using the SupportNavigationFragment mNavFragment.setTrafficIncidentCardsEnabled(true); // Using the NavigationView navigationView.setTrafficIncidentCardsEnabled(true);
Fiches d'informations sur les légendes pendant la navigation active
Lorsqu'une légende de perturbation s'affiche le long d'un itinéraire pendant la navigation active, les utilisateurs peuvent appuyer dessus pour afficher une fiche d'informations contenant plus d'informations sur la perturbation, y compris son type et l'heure à laquelle elle a été signalée pour la dernière fois, ainsi que des boutons permettant de voter pour indiquer si la perturbation est toujours présente. Les votes envoyés par les utilisateurs sont traités par Google et peuvent être affichés sur la carte pour les autres utilisateurs de Google Maps et du SDK Navigation, et peuvent également être utilisés pour déterminer s'il faut continuer à afficher la perturbation.
Vous pouvez contrôler l'affichage et la possibilité d'appuyer sur les légendes de perturbation pendant la navigation active à l'aide de
setTrafficPromptsEnabled
, qui contrôle également l'
affichage des légendes le long des itinéraires et l'
affichage des alertes automatiques lorsqu'un utilisateur approche d'une perturbation.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Alertes de perturbation automatiques avec vote pendant la navigation active
Pendant la navigation active, lorsqu'un utilisateur approche d'une perturbation le long d'un itinéraire, un message s'affiche avec des informations sur la perturbation et des boutons permettant de voter pour indiquer si la perturbation est toujours présente. Les votes envoyés par les utilisateurs sont traités par Google et peuvent être affichés sur la carte pour les autres utilisateurs de Google Maps et du SDK Navigation, et peuvent également être utilisés pour déterminer s'il faut continuer à afficher la perturbation.
Vous pouvez configurer l'affichage des messages d'alerte pendant la navigation active à l'aide de
setTrafficPromptsEnabled
, qui contrôle également l'affichage
des légendes le long des itinéraires.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Signalement des perturbations pendant la navigation active
En mode de navigation active, un bouton s'affiche dans l'interface utilisateur de navigation, ce qui permet aux utilisateurs de signaler de nouvelles perturbations sur leur itinéraire. Lorsqu'un utilisateur appuie sur le bouton, un menu s'affiche avec les types de perturbations disponibles à signaler. Les signalements envoyés par les utilisateurs sont traités par Google et peuvent être affichés sur la carte pour les autres utilisateurs de Google Maps et du SDK Navigation.
Afficher ou masquer le bouton de signalement standard
Vous pouvez configurer la visibilité du bouton de signalement standard pendant la navigation active à l'aide de
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);
Ajouter un bouton de signalement personnalisé
Au lieu du bouton de signalement des perturbations standard, vous pouvez ajouter un bouton de signalement personnalisé à l'interface utilisateur de navigation. Lorsque l'utilisateur clique sur le bouton personnalisé, vous pouvez déclencher l'affichage du menu de signalement
en appelant la showReportIncidentsPanel méthode. Avant d'ajouter un bouton de signalement personnalisé, vérifiez que l'application est en navigation active et que l'utilisateur se trouve dans un pays où le signalement
est activé en appelant isIncidentReportingAvailable. Si l'une de ces conditions n'est pas remplie,
le menu de signalement ne s'affiche pas.
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());
Utiliser des interfaces utilisateur de navigation personnalisées
Si votre implémentation du SDK Navigation inclut des éléments d'interface utilisateur personnalisés, vous devez tenir compte des éléments de perturbation en temps réel pour éviter les conflits.
Positionnement du bouton de signalement
Par défaut, le bouton de signalement des perturbations est positionné en bas/à l'angle de fin de la carte : à droite pour les langues qui se lisent de gauche à droite et à gauche pour les langues qui se lisent de droite à gauche. Si vous devez déplacer le bouton de signalement pour laisser de la place aux éléments d'interface utilisateur personnalisés, ajoutez un contrôle personnaliséBOTTOM_END_BELOW ou FOOTER, qui déplacera le
bouton vers le haut de l'écran. Le fait de placer vos propres interfaces utilisateur personnalisées dans les commandes personnalisées garantit également que tous les messages affichés par le SDK Navigation sont correctement superposés à vos éléments d'interface utilisateur personnalisés lorsqu'ils sont affichés. Si vous ne pouvez pas utiliser de commandes personnalisées, utilisez l'
API de visibilité des messages pour gérer les conflits potentiels d'interface utilisateur.
API de visibilité des messages (expérimentale)
L'API de visibilité des messages vous aide à éviter les conflits entre les éléments d'interface utilisateur générés par le SDK Navigation et vos propres éléments d'interface utilisateur personnalisés en ajoutant un écouteur pour recevoir un rappel avant qu'un élément d'interface utilisateur du SDK Navigation ne s'affiche et dès que l'élément est supprimé. Vous pouvez recevoir des rappels pour les éléments de perturbation en temps réel, y compris les fiches d'informations, les messages et le menu de signalement des perturbations, ainsi que pour d'autres notifications générées par le SDK 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)