Configura alertas del velocímetro

Cuando se habilita la navegación, el SDK de Navigation para Android muestra un control de límite de velocidad en la esquina inferior izquierda del mapa que indica 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 cierto umbral.

De forma predeterminada, el SDK de Navigation activa una alerta de velocidad leve cuando el usuario supera el límite de velocidad en 8 km/h (o 5 mph) y cambia el color del texto del velocímetro a rojo. Se activa una alerta de velocidad grave cuando el usuario supera el límite de velocidad en 16 km/h (o 10 mph) y cambia el color de fondo del velocímetro a rojo.

Puedes personalizar tanto el umbral para activar las alertas como los colores de texto y 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 estableciste. Por ejemplo, podrías poner a disposición de los operadores de viajes compartidos información sobre la velocidad para ayudarlos a alentar a sus usuarios a cumplir con el límite de velocidad y mejorar la seguridad.

Cómo personalizar los umbrales de las alertas de velocidad

Puedes personalizar el umbral de alerta de velocidad para las alertas de velocidad leves y graves como un porcentaje por encima del límite de 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 por encima del límite de velocidad y el umbral para una alerta de velocidad mayor 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:

ElementoColor
MinorSpeedAlertBackgroundColorDayMode 0xffffff(blanco)
MinorSpeedAlertBackgroundColorNightMode 0x000000
MinorSpeedAlertTextColorDayMode 0xd93025
MinorSpeedAlertTextColorNightMode 0xd93025
MajorSpeedAlertBackgroundColorDayMode 0xd93025
MajorSpeedAlertBackgroundColorNightMode 0xd93025
MajorSpeedAlertTextColorDayMode 0xffffff(blanco)
MajorSpeedAlertTextColorNightMode 0xffffff(blanco)

Puedes especificar el color del texto y el fondo del velocímetro para las alertas de velocidad leves y graves:

 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);

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 las aplicaciones de viajes compartidos 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.

Por ejemplo, el siguiente ejemplo comparte información sobre la velocidad cuando esta supera un porcentaje especificado 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);