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 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, así como los colores del texto y del 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, puedes poner la información de velocidad a disposición de los operadores de viajes compartidos para ayudarlos a incentivar a sus usuarios a respetar el límite de velocidad y mejorar la seguridad.

Cómo personalizar los umbrales de las alertas de velocidad

Puedes personalizar el umbral de la alerta de velocidad para las alertas de velocidad menores y mayores como un porcentaje sobre el límite de velocidad actual. También puedes especificar cuánto tiempo se debe superar 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 exceso de velocidad leve en un 5% por encima del límite de velocidad, y el umbral para una alerta de exceso de velocidad grave en un 10% 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 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());

Cómo personalizar la forma en que el velocímetro muestra las alertas de velocidad

Para que las alertas de velocidad llamen más la atención, puedes personalizar los colores de la pantalla del velocímetro para cada nivel de alerta.

En la siguiente tabla, se muestran los colores predeterminados de 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 del 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 NavigationFragment.
navigationFragment.setSpeedometerUiOptions(speedometerUiOptionsBuilder.build());
 navigationFragment.setSpeedometerEnabled(true);

Recibir información sobre la 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 esa información 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. También puedes hacerlo sin necesidad de renderizar una vista de navegación para el usuario en tu app.

En la siguiente muestra de código, se comparte información de velocidad cuando esta supera el límite en un porcentaje especificado:

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