Configurar alertas do velocímetro

Quando a navegação está ativada, o SDK Navigation para Android mostra um controle de limite de velocidade no canto inferior esquerdo do mapa, que mostra o limite de velocidade atual. Se um usuário exceder o limite de velocidade, o controle será expandido para mostrar um velocímetro ao lado da tela de limite de velocidade e acionar alertas quando a velocidade atingir um determinado limite.

Por padrão, o SDK de navegação aciona um alerta de velocidade menor quando o usuário ultrapassa o limite de velocidade em 5 mph (ou 10 km/h) e muda a cor do texto do velocímetro para vermelho. Ele aciona um alerta de velocidade principal quando o usuário excede o limite de velocidade em 10 mph (ou 20 km/h) e muda a cor de fundo do velocímetro para vermelho.

É possível personalizar o limite para acionar os alertas e as cores de texto e de plano de fundo que o velocímetro exibe. Também é possível usar o SDK de navegação para disponibilizar as informações de velocidade do usuário de acordo com os limites definidos. Por exemplo, você pode disponibilizar informações de velocidade para operadores de carona para incentivar os usuários a obedecer ao limite de velocidade e melhorar a segurança.

Personalizar limites para alertas de velocidade

É possível personalizar o limite para alertas de velocidade secundários e principais como uma porcentagem acima do limite de velocidade atual. Você também pode especificar por quanto tempo o limite é excedido antes que o mapa mostre o alerta.

O exemplo de código a seguir define o limite para um alerta de velocidade menor em 5% acima do limite de velocidade e o limite para um alerta de velocidade maior em 10% acima do limite de velocidade. Ele especifica que o mapa mostra um alerta depois que um limite de alerta é excedido por cinco segundos.


 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());

Personalizar como o velocímetro mostra alertas de velocidade

Para chamar mais a atenção para os alertas de velocidade, é possível personalizar as cores da tela do velocímetro para cada nível de alerta.

A tabela a seguir mostra as cores padrão para alertas de velocidade na classe NavigationView:

ElementoCor
MinorSpeedAlertBackgroundColorDayMode 0xffffff (branco)
MinorSpeedAlertBackgroundColorNightMode 0x000000
MinorSpeedAlertTextColorDayMode 0xd93025
MinorSpeedAlertTextColorNightMode 0xd93025
MajorSpeedAlertBackgroundColorDayMode 0xd93025
MajorSpeedAlertBackgroundColorNightMode 0xd93025
MajorSpeedAlertTextColorDayMode 0xffffff(branco)
MajorSpeedAlertTextColorNightMode 0xffffff (branco)

É possível especificar a cor do texto e do plano de fundo do velocímetro para alertas de velocidade menores e maiores:

 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);

Receber informações de velocidade dos usuários

Se o app precisar compartilhar informações sobre a velocidade do usuário, você também poderá usar o SDK de navegação para disponibilizar as informações de velocidade do usuário. Por exemplo, isso pode ser útil para aplicativos de transporte por aplicativo em que um operador pode querer monitorar a velocidade excessiva dos usuários para melhorar a segurança. Isso também pode ser feito sem precisar renderizar uma visualização de navegação para o usuário no app.

Por exemplo, o exemplo a seguir compartilha informações de velocidade quando a velocidade é uma porcentagem especificada acima do limite de velocidade:

 // 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);