Quando a navegação está ativada, o SDK do 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 ultrapassar o limite de velocidade, o controle vai se expandir para mostrar um velocímetro ao lado do limite de velocidade e acionar alertas quando a velocidade atingir um determinado limite.
Por padrão, o SDK do Navigation aciona um alerta de velocidade leve 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 alta quando o usuário ultrapassa 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 do texto e do plano de fundo que o velocímetro mostra. Você também pode 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 transporte por aplicativo para que eles incentivem os usuários a respeitar o limite de velocidade e melhorar a segurança.
Personalizar limites para alertas de velocidade
É possível personalizar o limite de alertas de velocidade baixa e alta como uma porcentagem acima do limite de velocidade atual. Também é possível 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 5% acima do limite de velocidade e o limite para um alerta de velocidade maior como 10% acima do limite de velocidade. Ele especifica que o mapa mostra um alerta depois que um limite de alerta é excedido por 5 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 os alertas de velocidade
Para que os alertas de velocidade chamem mais atenção, você pode personalizar as cores 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:
| Elemento | Cor |
|---|---|
| MinorSpeedAlertBackgroundColorDayMode | 0xffffff(branco) |
| MinorSpeedAlertBackgroundColorNightMode | 0x000000 |
| MinorSpeedAlertTextColorDayMode | 0xd93025 |
| MinorSpeedAlertTextColorNightMode | 0xd93025 |
| MajorSpeedAlertBackgroundColorDayMode | 0xd93025 |
| MajorSpeedAlertBackgroundColorNightMode | 0xd93025 |
| MajorSpeedAlertTextColorDayMode | 0xffffff(branco) |
| MajorSpeedAlertTextColorNightMode | 0xffffff(branco) |
É possível especificar o texto e a cor 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 NavigationFragment.
navigationFragment.setSpeedometerUiOptions(speedometerUiOptionsBuilder.build());
navigationFragment.setSpeedometerEnabled(true);
Receber informações de velocidade dos usuários
Se o aplicativo precisar compartilhar informações sobre a velocidade do usuário, você também poderá usar o SDK do Navigation para disponibilizar essas informações. Por exemplo, isso pode ser útil para aplicativos de transporte por aplicativo em que um operador pode querer monitorar o excesso de velocidade dos usuários para melhorar a segurança. Também é possível fazer isso sem precisar renderizar uma visualização de navegação para o usuário no app.
O exemplo de código a seguir compartilha informações de velocidade quando ela está em uma porcentagem especificada acima do limite:
// 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);