Configurare le interruzioni in tempo reale
Le interruzioni in tempo reale sono un insieme di funzionalità che avvisano gli utenti delle interruzioni lungo il loro percorso e consentono loro di segnalare e verificare le interruzioni che incontrano. Esempi di interruzioni includono incidenti stradali, traffico intenso, presenza di polizia e autovelox fissi, lavori in corso, chiusure di corsie e determinate condizioni meteorologiche. Questa pagina illustra le funzionalità di interruzione in tempo reale e le relative opzioni di configurazione, incluse le considerazioni per le app che utilizzano UI di navigazione personalizzate.
Funzionalità di interruzione in tempo reale
Navigation SDK include le seguenti funzionalità di interruzione in tempo reale nell'esperienza di navigazione di base:- Callout interattivi per le interruzioni lungo i percorsi.
- Avvisi di interruzione automatici con votazione durante la navigazione attiva.
- Segnalazione di interruzioni durante la navigazione attiva.
Queste funzionalità sono configurabili e attivate per impostazione predefinita. Le sezioni seguenti forniscono ulteriori informazioni sulle funzionalità e sulle opzioni di configurazione disponibili.
Callout interattivi per le interruzioni lungo i percorsi
Quando un'app mostra un percorso, in una panoramica del percorso o durante la navigazione attiva, le interruzioni correnti vengono visualizzate come callout lungo il percorso. I callout includono un'icona che indica il tipo di interruzione.
Puoi controllare la visualizzazione dei callout di interruzione lungo i percorsi utilizzando setTrafficPromptsEnabled, che controlla anche 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);
Visualizzare i dettagli dell'interruzione quando un utente tocca un callout
Gli utenti possono toccare un callout per visualizzare una scheda informativa con ulteriori informazioni sull'interruzione, tra cui il tipo di interruzione, l'ultima volta in cui è stata segnalata e, in alcuni casi, un'opzione per votare se l'interruzione è ancora presente. Esistono due diversi tipi di schede informative che possono essere visualizzate, a seconda che l'utente sia in navigazione attiva e le opzioni di configurazione variano per ogni tipo.
Schede informative dei callout nelle panoramiche dei percorsi, prima di avviare la navigazione attiva
Quando un utente tocca un callout in una panoramica del percorso, prima di avviare la navigazione attiva, viene visualizzata una scheda informativa con ulteriori informazioni sull'interruzione.
Puoi controllare la possibilità per gli utenti di toccare i callout di interruzione 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
Quando un callout di interruzione viene visualizzato lungo un percorso durante la navigazione attiva, gli utenti possono toccarlo per visualizzare una scheda informativa con ulteriori informazioni sull'interruzione, tra cui il tipo di interruzione e l'ultima volta in cui è stata segnalata, nonché i pulsanti per votare se l'interruzione è ancora presente. I voti inviati dagli utenti vengono elaborati da Google e possono essere visualizzati sulla mappa per altri utenti di Google Maps e Navigation SDK, nonché utilizzati per determinare se continuare a mostrare l'interruzione.
Puoi controllare la visualizzazione e la possibilità di toccare i callout di interruzione 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 di interruzione automatici 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 possono essere visualizzati sulla mappa per altri utenti di Google Maps e Navigation SDK, 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
di 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'UI di navigazione viene visualizzato un pulsante che consente agli utenti di segnalare nuove interruzioni lungo il loro 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 possono essere visualizzate sulla mappa per altri utenti di Google Maps e Navigation SDK.
Mostrare o nascondere il pulsante di segnalazione 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 di segnalazione di interruzione standard, puoi aggiungere un pulsante di segnalazione personalizzato all'UI di navigazione. Quando l'utente fa clic sul pulsante personalizzato, puoi attivare la visualizzazione del menu di segnalazione
chiamando il showReportIncidentsPanel metodo. 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
è attivata chiamando isIncidentReportingAvailable. Se una di queste condizioni non è vera,
il menu di segnalazione 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 UI di navigazione personalizzate
Se la tua 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 interruzione si trova nell'angolo inferiore/finale della mappa, sul lato destro per le lingue con scrittura da sinistra a destra e sul lato sinistro per le lingue con scrittura da destra a sinistra. Se devi spostare il pulsante di segnalazione per fare spazio agli elementi UI personalizzati, aggiungi unBOTTOM_END_BELOW o FOOTER controllo personalizzato, che sposterà la posizione del pulsante verso l'alto sullo schermo. Se inserisci le tue UI personalizzate all'interno dei controlli personalizzati, ti assicuri anche che tutti i prompt visualizzati da Navigation SDK siano correttamente sovrapposti agli elementi UI personalizzati durante la visualizzazione. Se non riesci a utilizzare i controlli personalizzati, utilizza l'
API Visibilità dei prompt per gestire i potenziali conflitti dell'UI.
API Visibilità dei prompt (sperimentale)
L'API Visibilità dei prompt 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 di interruzione, 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)