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 exibição do limite de velocidade e acionará alertas quando a velocidade atingir um determinado limite.

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

É possível personalizar o limite para acionar os alertas e as cores do texto e do plano de fundo que o velocímetro mostra. Você também pode usar o SDK Navigation 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 transporte compartilhado para ajudar a incentivar os usuários a obedecerem ao limite de velocidade e melhorar a segurança.

Personalizar limites para alertas de velocidade

É possível personalizar o limite de alerta de velocidade para alertas menores e maiores 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 como cinco por cento acima do limite de velocidade e o limite para um alerta de velocidade maior como 10 por cento 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 tornar os alertas de velocidade mais chamativos, é possível personalizar as cores da exibição 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 aplicativo exigir o compartilhamento de informações sobre a velocidade do usuário, também será possível usar o SDK Navigation para disponibilizar as informações de velocidade do usuário. Por exemplo, isso pode ser útil para aplicativos de transporte compartilhado em que um operador pode querer monitorar o excesso de velocidade 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 seu 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);