Configurare i disservizi in tempo reale
I disservizi in tempo reale sono un insieme di funzionalità che avvisano gli utenti dei disservizi lungo il loro percorso e consentono loro di segnalare e verificare i disservizi che incontrano. Alcuni esempi di interruzioni includono incidenti stradali, traffico intenso, presenza di polizia e autovelox fisso, lavori in corso, chiusure di corsie e determinate condizioni meteorologiche. Questa pagina spiega le funzionalità di interruzione in tempo reale e le relative opzioni di configurazione, inclusi i fattori da considerare per le app che utilizzano UI di navigazione personalizzate.
Funzionalità di interruzione in tempo reale
L'SDK Navigation include le seguenti funzionalità di interruzione in tempo reale nell'ambito dell'esperienza di navigazione di base:- Callout interattivi per le interruzioni lungo i percorsi.
- Avvisi automatici di interruzioni con votazione durante la navigazione attiva.
- Segnalazione di interruzioni durante la navigazione attiva.
Queste funzionalità sono configurabili e attive per impostazione predefinita. Le sezioni seguenti forniscono ulteriori informazioni sulle funzionalità e sulle opzioni di configurazione disponibili.
Callout interattivi di interruzioni lungo i percorsi
Quando un'app mostra un percorso, in una panoramica del percorso o durante la navigazione attiva, eventuali interruzioni correnti vengono visualizzate come callout lungo il percorso. Quando attivi il livello del traffico, sulla mappa vengono visualizzate anche le interruzioni fuori percorso. I callout includono un'icona che indica il tipo di interruzione.
Puoi controllare la visualizzazione dei callout relativi ai disservizi lungo i percorsi utilizzando setTrafficPromptsEnabled, che controlla anche la visualizzazione degli avvisi automatici quando un utente si avvicina a un disservizio.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Mostra i dettagli dell'interruzione quando un utente tocca una bolla
Se tocchi una notifica di interruzione, si apre una scheda informativa con maggiori dettagli. Ciò vale sia per i callout sul percorso sia per quelli fuori percorso, anche se questi ultimi vengono visualizzati solo se il livello del traffico è attivo. La scheda mostra il tipo di interruzione, l'ora dell'ultima segnalazione e a volte un'opzione per votare se l'interruzione è ancora presente. Il tipo di scheda informativa e le relative opzioni di configurazione variano a seconda che l'utente stia navigando attivamente.
Schede informative nei riepiloghi del percorso, prima di avviare la navigazione attiva
Prima di avviare la navigazione attiva, gli utenti possono toccare un callout sul percorso o fuori percorso sulla mappa o nella panoramica del percorso per aprire una scheda informativa. I callout fuori percorso richiedono l'abilitazione del livello di traffico. La scheda informativa fornisce maggiori dettagli sull'interruzione.
Puoi controllare la possibilità per gli utenti di toccare i callout relativi alle interruzioni nelle panoramiche dei percorsi per visualizzare ulteriori
informazioni utilizzando
setTrafficIncidentCardsEnabled
.
// Using the SupportNavigationFragment mNavFragment.setTrafficIncidentCardsEnabled(true); // Using the NavigationView navigationView.setTrafficIncidentCardsEnabled(true);
Schede informative dei callout durante la navigazione attiva
Durante la navigazione attiva, gli utenti possono toccare un callout di interruzione sul percorso o fuori percorso per aprire una scheda informativa. La scheda mostra il tipo di interruzione e l'ultima ora segnalata e include pulsanti che consentono agli utenti di votare se l'interruzione è ancora presente.
La votazione è disponibile per i disservizi lungo il percorso e fuori percorso entro 5 km dall'utente, escluse le chiusure stradali. Google elabora questi voti per determinare se continuare a mostrare l'interruzione. I voti potrebbero essere visualizzati anche sulla mappa per altri utenti di Google Maps e dell'SDK Navigation.
Puoi controllare la visualizzazione e la possibilità di toccare i callout relativi alle interruzioni durante la navigazione attiva utilizzando
setTrafficPromptsEnabled
, che controlla anche la
visualizzazione dei callout lungo i percorsi e la
visualizzazione degli avvisi automatici quando un utente si avvicina a un'interruzione.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Avvisi automatici di interruzione con votazione durante la navigazione attiva
Durante la navigazione attiva, quando un utente si avvicina a un'interruzione lungo un percorso, viene visualizzato un prompt con informazioni sull'interruzione e pulsanti per votare se l'interruzione è ancora presente. I voti inviati dagli utenti vengono elaborati da Google e potrebbero essere visualizzati sulla mappa per altri utenti di Google Maps e dell'SDK Navigation, nonché utilizzati per determinare se continuare a mostrare l'interruzione.
Puoi configurare la visualizzazione dei prompt di avviso durante la navigazione attiva utilizzando
setTrafficPromptsEnabled
, che controlla anche la visualizzazione
dei callout lungo i percorsi.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Segnalazione di interruzioni durante la navigazione attiva
Durante la modalità di navigazione attiva, nell'interfaccia utente di navigazione viene visualizzato un pulsante che consente agli utenti di segnalare nuovi disagi lungo il percorso. Quando un utente tocca il pulsante, viene visualizzato un menu con i tipi di interruzione disponibili da segnalare. Le segnalazioni inviate dagli utenti vengono elaborate da Google e potrebbero essere visualizzate sulla mappa per altri utenti di Google Maps e dell'SDK Navigation.
La segnalazione di una chiusura stradale potrebbe presentare un itinerario alternativo per evitare il tratto bloccato, chiedendo all'utente di confermare o negare il cambio percorso. Questa funzionalità è soggetta a disponibilità.
Mostrare o nascondere il pulsante dei report standard
Puoi configurare la visibilità del pulsante di segnalazione standard durante la navigazione attiva utilizzando
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);
Aggiungere un pulsante di segnalazione personalizzato
Al posto del pulsante standard per la segnalazione di interruzioni, puoi aggiungere un pulsante di segnalazione personalizzato all'interfaccia utente di navigazione. Quando l'utente fa clic sul pulsante personalizzato, puoi attivare la visualizzazione del menu dei report chiamando il metodo showReportIncidentsPanel. Prima di aggiungere un pulsante di segnalazione personalizzato, verifica che l'app sia in navigazione attiva e che l'utente si trovi in un paese in cui la segnalazione è abilitata chiamando isIncidentReportingAvailable. Se una di queste condizioni non è vera,
il menu dei report non verrà visualizzato.
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());
Utilizzare interfacce utente di navigazione personalizzate
Se l'implementazione di Navigation SDK include elementi UI personalizzati, devi prendere in considerazione gli elementi di interruzione in tempo reale per evitare conflitti.
Posizionamento del pulsante di segnalazione
Per impostazione predefinita, il pulsante di segnalazione di interruzioni si trova nell'angolo finale/posteriore della mappa, sul lato destro per le lingue con direzione da sinistra a destra e sul lato sinistro per le lingue con direzione da destra a sinistra. Se devi spostare il pulsante di segnalazione per fare spazio a elementi UI personalizzati, aggiungi un controllo personalizzatoBOTTOM_END_BELOW o FOOTER, che sposterà la posizione del pulsante verso l'alto dello schermo. Il posizionamento delle tue UI personalizzate all'interno dei controlli personalizzati
garantisce inoltre che le richieste visualizzate dall'SDK Navigation vengano sovrapposte correttamente ai tuoi
elementi UI personalizzati durante la visualizzazione. Se non riesci a utilizzare i controlli personalizzati, utilizza l'API Prompt Visibility per gestire potenziali conflitti dell'interfaccia utente.
API Prompt Visibility (sperimentale)
L'API Prompt Visibility ti aiuta a evitare conflitti tra gli elementi UI generati da Navigation SDK e i tuoi elementi UI personalizzati aggiungendo un listener per ricevere un callback prima che un elemento UI di Navigation SDK stia per essere visualizzato e non appena l'elemento viene rimosso. Puoi ricevere callback per gli elementi di interruzione in tempo reale, tra cui schede informative, prompt e il menu di segnalazione delle interruzioni, nonché per altre notifiche generate da Navigation SDK.// 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)