Configura alertas del velocímetro

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 conductor 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 menor de velocidad cuando el conductor supera el límite de velocidad en 10 km/h (5 mph) y cambia el color del texto del velocímetro a rojo. Activa una alerta de velocidad importante cuando el conductor supera el límite de velocidad en 20 km/h (10 mph) y cambia el color de fondo del velocímetro a rojo.

Puedes personalizar el umbral para activar las alertas y los colores de texto y fondo que muestra el velocímetro. También puedes usar el SDK de Navigation para que la información de velocidad del conductor esté disponible según los umbrales que hayas establecido. Por ejemplo, puedes poner a disposición de los operadores de transportes compartidos la información de velocidad para ayudarlos a alentar a sus conductores a cumplir con los límites de velocidad y mejorar la seguridad.

Personaliza los umbrales de las alertas de velocidad

Puedes personalizar el umbral de las alertas de velocidad para las alertas de velocidad menores y mayores como un porcentaje sobre el límite de velocidad actual. También puedes especificar durante 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 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% sobre el límite de velocidad. Especifica que el mapa muestra una alerta después de que se supera un umbral de alertas 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());

Personaliza 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 de cada nivel de alerta.

En la siguiente tabla, se muestran los colores predeterminados de las alertas de velocidad de 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 texto y el color de fondo del velocímetro para las alertas de velocidad menor y mayor:

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 sobre la velocidad de los conductores

Si tu aplicación requiere que se comparta información sobre la velocidad del conductor, también puedes usar el SDK de Navigation para que la información de velocidad del conductor esté disponible. Esto puede ser útil para las aplicaciones de transporte compartido en las que un operador desea supervisar el exceso de velocidad de los conductores para mejorar la seguridad. Esto también se puede hacer sin necesidad de renderizar una vista de navegación al usuario en tu app.

En el siguiente ejemplo, se comparte información de velocidad cuando la velocidad 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);