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 com o limite atual. Se um motorista exceder o limite de velocidade, o controle vai se expandir para mostrar um velocímetro ao lado da tela do limite de velocidade e acionar alertas quando a velocidade atingir um determinado limite.
Por padrão, o SDK do Navigation aciona um pequeno alerta de velocidade quando o motorista excede o limite de velocidade em 10 km/h e muda a cor do texto do velocímetro para vermelho. Ele aciona um grande alerta de velocidade quando o motorista excede o limite de velocidade em 20 km/h e muda a cor de fundo do velocímetro para vermelha.
Você pode personalizar o limite para acionar os alertas e as cores de texto e de plano de fundo exibidas pelo velocímetro. Você também pode usar o SDK do Navigation para disponibilizar as informações de velocidade do motorista de acordo com os limites definidos. Por exemplo, é possível disponibilizar informações sobre velocidade para os operadores de transporte por aplicativo a fim de incentivar os motoristas a respeitar o limite de velocidade e melhorar a segurança.
Personalize os limites dos alertas de velocidade
É possível personalizar o limite dos alertas de velocidade principais e secundários como uma porcentagem acima do limite da velocidade atual. Você também pode especificar por quanto tempo o limite é excedido antes que o mapa exiba o alerta.
O exemplo de código a seguir define o limite de um alerta de velocidade secundária como 5% acima do limite e o limite de um alerta de velocidade principal como 10% acima do limite. Ele especifica que o mapa exibe um alerta depois que um limite de alerta for 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());
Personalize como o velocímetro mostra alertas de velocidade
Para tornar os alertas de velocidade mais chamativos, personalize as cores da tela do velocímetro para cada nível de alerta.
A tabela abaixo mostra as cores padrão dos 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) |
Você pode especificar a cor do texto e do plano de fundo do velocímetro para alertas de velocidade menor e principal:
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 motoristas
Caso seu aplicativo exija o compartilhamento de informações sobre a velocidade do motorista, você também pode usar o SDK do Navigation para disponibilizar essas informações. Isso pode ser útil para aplicativos de transporte por aplicativo em que um operador quer monitorar o excesso de velocidade dos motoristas para aumentar a segurança. Isso também pode ser feito sem a necessidade de 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 ela está em uma porcentagem específica 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);