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 indica o limite de velocidade atual. Se um usuário exceder o limite de velocidade, o controle vai mostrar um velocímetro ao lado da exibição do limite e vai acionar alertas quando a velocidade atingir um determinado limite.
Por padrão, o SDK Navigation aciona um alerta de velocidade leve quando o usuário ultrapassa o limite de velocidade em 8 km/h (ou 10 km/h) e muda a cor do texto do velocímetro para vermelho. Ele aciona um alerta de velocidade grave quando o usuário excede o limite de velocidade em 16 km/h (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 mostradas no velocímetro. Também é possível usar o SDK Navigation para disponibilizar as informações de velocidade do usuário de acordo com os limites definidos. Por exemplo, é possível disponibilizar informações de velocidade para operadores de carona compartilhada e ajudar a 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 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 leve como 5% acima do limite de velocidade e o limite para um alerta de velocidade grave como 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 deixar os alertas de velocidade mais chamativos, personalize 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 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 precisar compartilhar informações sobre a velocidade do usuário, você também poderá usar o SDK Navigation para disponibilizar essas informações. Por exemplo, isso pode ser útil para aplicativos de carona compartilhada 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 app.
Por exemplo, o exemplo a seguir compartilha informações de velocidade quando ela está um percentual especificado 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);