Cuando la navegación está habilitada, el SDK de Navigation para Android muestra un control de límite de velocidad en la esquina inferior izquierda del mapa que muestra el límite de velocidad actual. Si un usuario supera el límite de velocidad, el control se expande para mostrar un velocímetro junto a la pantalla del límite de velocidad y activa alertas cuando la velocidad alcanza un umbral determinado.
De forma predeterminada, el SDK de Navigation activa una alerta de velocidad menor cuando el usuario supera el límite de velocidad en 5 mph (o 10 km/h) y cambia el color del texto del velocímetro a rojo. Activa una alerta de velocidad importante cuando el usuario supera el límite de velocidad en 10 mph (o 20 km/h) y cambia el color de fondo del velocímetro a rojo.
Puedes personalizar el umbral para activar las alertas y el texto y los colores de fondo que muestra el velocímetro. También puedes usar el SDK de Navigation para que la información de velocidad del usuario esté disponible de acuerdo con los umbrales que hayas establecido. Por ejemplo, puedes hacer que la información de velocidad esté disponible para los operadores de transporte compartido y motivar a sus usuarios a cumplir con el límite de velocidad y mejorar la seguridad.
Personaliza los umbrales para las alertas de velocidad
Puedes personalizar el umbral de alerta de velocidad para las alertas de velocidad menores y mayores como un porcentaje sobre el límite de velocidad de la velocidad actual. También puedes especificar durante cuánto tiempo se supera el umbral antes de que el mapa muestre la alerta.
En el siguiente ejemplo de código, se establece el umbral para una alerta de velocidad menor en un cinco por ciento sobre el límite de velocidad y el umbral para una alerta de velocidad importante en un 10 por ciento por encima del límite de velocidad. Especifica que el mapa muestra una alerta después de que se supera un umbral de alerta durante 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());
Cómo personalizar la forma en que el velocímetro muestra las alertas de velocidad
Para que las alertas de velocidad sean más llamativas, puedes personalizar los colores de la pantalla del velocímetro para cada nivel de alerta.
En la siguiente tabla, se muestran los colores predeterminados para las alertas de velocidad en la clase NavigationView
:
Elemento | Color |
---|---|
MinorSpeedAlertBackgroundColorDayMode | 0xffffff(blanco) |
MinorSpeedAlertBackgroundColorNightMode | 0x000000 |
MinorSpeedAlertTextColorDayMode | 0xd93025 |
MinorSpeedAlertTextColorNightMode | 0xd93025 |
MajorSpeedAlertBackgroundColorDayMode | 0xd93025 |
MajorSpeedAlertBackgroundColorNightMode | 0xd93025 |
MajorSpeedAlertTextColorDayMode | 0xffffff(blanco) |
MajorSpeedAlertTextColorNightMode | 0xffffff(blanco) |
Puedes especificar el texto y el color de fondo del velocímetro para las alertas de velocidad menores y mayores:
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);
Cómo recibir información de velocidad de los usuarios
Si tu aplicación requiere compartir información sobre la velocidad del usuario, también puedes usar el SDK de Navigation para que la información de velocidad del usuario esté disponible. Por ejemplo, esto puede ser útil para aplicaciones de transporte privado con conductor en las que un operador puede querer supervisar el exceso de velocidad de los usuarios para mejorar la seguridad. Esto también se puede hacer sin necesidad de renderizar una vista de navegación para el usuario en tu app.
En el siguiente ejemplo, se comparte información de velocidad cuando la velocidad es un porcentaje especificado por encima del límite de velocidad:
// 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);