Configura avvisi contachilometri

Quando la navigazione è attiva, l'SDK Navigation per Android mostra un controllo del limite di velocità nell'angolo in basso a sinistra della mappa che indica il limite di velocità corrente. Se un utente supera il limite di velocità, il controllo si espande per mostrare un tachimetro accanto al display del limite di velocità e attiva gli avvisi quando la velocità raggiunge una determinata soglia.

Per impostazione predefinita, l'SDK Navigation attiva un avviso di velocità minore quando l'utente supera il limite di velocità di 8 km/h e cambia il colore del testo del tachimetro in rosso. Attiva un avviso di velocità importante quando l'utente supera il limite di velocità di 10 mph (20 km/h) e cambia il colore di sfondo del tachimetro in rosso.

Puoi personalizzare sia la soglia per l'attivazione degli avvisi sia i colori del testo e dello sfondo visualizzati dal tachimetro. Puoi anche utilizzare l'SDK Navigation per rendere disponibili le informazioni sulla velocità dell'utente in base alle soglie che hai impostato. Ad esempio, potresti rendere disponibili le informazioni sulla velocità per gli operatori di servizi di ride sharing per aiutarli a incoraggiare i propri utenti a rispettare il limite di velocità e migliorare la sicurezza.

Personalizzare le soglie per gli avvisi di velocità

Puoi personalizzare la soglia di avviso di velocità sia per gli avvisi di velocità minori che per quelli maggiori come percentuale rispetto al limite di velocità della velocità corrente. Puoi anche specificare per quanto tempo la soglia viene superata prima che la mappa mostri l'avviso.

L'esempio di codice seguente imposta la soglia per un avviso di velocità minore sul 5 percento in più rispetto al limite di velocità e la soglia per un avviso di velocità maggiore sul 10 percento in più rispetto al limite di velocità. Specifica che la mappa mostra un avviso dopo che è stata superata una soglia di avviso per cinque secondi.


 float minorSpeedAlertThresholdPercentage = 5; float
majorSpeedAlertThresholdPercentage = 10; double severityUpgradeDurationSeconds =
5;

 // Configure SpeedAlertOptions SpeedAlertOptions.Builder
speedAlertOptionsBuilder = new SpeedAlertOptions.Builder();
speedAlertOptionsBuilder.setSpeedAlertThresholdPercentage(
SpeedAlertSeverity.MINOR, minorSpeedAlertThresholdPercentage);
speedAlertOptionsBuilder.setSpeedAlertThresholdPercentage(
SpeedAlertSeverity.MAJOR, majorSpeedAlertThresholdPercentage);
speedAlertOptionsBuilder.setSeverityUpgradeDurationSeconds(severityUpgradeDurationSeconds);

 // Set SpeedAlertOptions to Navigator.
navigator.setSpeedAlertOptions(speedAlertOptionsBuilder.build());

Personalizzare la modalità di visualizzazione degli avvisi di velocità sul tachimetro

Per attirare l'attenzione sugli avvisi di velocità, puoi personalizzare i colori del display del tachimetro per ogni livello di avviso.

La tabella seguente mostra i colori predefiniti per gli avvisi di velocità nella classe NavigationView:

ElementoColore
MinorSpeedAlertBackgroundColorDayMode 0xffffff(bianco)
MinorSpeedAlertBackgroundColorNightMode 0x000000
MinorSpeedAlertTextColorDayMode 0xd93025
MinorSpeedAlertTextColorNightMode 0xd93025
MajorSpeedAlertBackgroundColorDayMode 0xd93025
MajorSpeedAlertBackgroundColorNightMode 0xd93025
MajorSpeedAlertTextColorDayMode 0xffffff(bianco)
MajorSpeedAlertTextColorNightMode 0xffffff(bianco)

Puoi specificare il testo e il colore di sfondo del tachimetro sia per gli avvisi di velocità minori che per quelli gravi:

 SpeedometerUiOptions speedometerUiOptions = new SpeedometerUiOptions.Builder()
 .setBackgroundColorDayMode(MINOR, some_color)
.setBackgroundColorNightMode(MINOR, some_color) .setTextColorDayMode(MINOR,
some_color) .setTextColorNightMode(MINOR, some_color)
.setBackgroundColorDayMode(MAJOR, some_color)
.setBackgroundColorNightMode(MAJOR, some_color) .setTextColorDayMode(MAJOR,
some_color) .setTextColorNightMode(MAJOR, some_color) .build();

 // Set SpeedometerUiOptions to NavigationView.
navigationView.setSpeedometerUiOptions(speedometerUiOptionsBuilder.build());
navigationView.setSpeedometerEnabled(true);

 // Set SpeedometerUiOptions to SupportNavigationFragment.
supportNavigationFragment.setSpeedometerUiOptions(speedometerUiOptionsBuilder.build());
 supportNavigationFragment.setSpeedometerEnabled(true);

Ricevere informazioni sulla velocità dagli utenti

Se la tua applicazione richiede la condivisione di informazioni sulla velocità dell'utente, puoi anche utilizzare l'SDK Navigation per rendere disponibili le informazioni sulla velocità dell'utente. Ad esempio, può essere utile per le applicazioni di ride sharing in cui un operatore potrebbe voler monitorare la velocità eccessiva degli utenti per migliorare la sicurezza. Questo può essere fatto anche senza dover eseguire il rendering di una visualizzazione di navigazione per l'utente nella tua app.

Ad esempio, l'esempio seguente condivide le informazioni sulla velocità quando la velocità è superiore di una percentuale specificata rispetto al limite di velocità:

 // Existing flow for creating Navigator. NavigationApi.getNavigator();

 // Set the SpeedAlertOptions for the MAJOR and MINOR alerts. (Note that the //
severityUpgradeDurationSeconds field is by design not used in this flow.)
SpeedAlertOptions speedAlertOptions = ...;
navigator.setSpeedAlertOptions(speedAlertOptions);

 // Implement SpeedingListener. SpeedingListener speedingListener = new
SpeedingListener() { @Override public void onSpeedingUpdated(float
percentageAboveLimit, SpeedAlertSeverity speedAlertSeverity) { ... } };

 // Set speedingListener to Navigator.
navigator.setSpeedingListener(speedingListener);