Настроить оповещения спидометра

Когда навигация включена, Navigation SDK для Android отображает в левом нижнем углу карты элемент управления ограничением скорости, показывающий текущее ограничение скорости. Если водитель превышает ограничение скорости, элемент управления расширяется и отображает спидометр рядом с дисплеем ограничения скорости и запускает оповещения, когда скорость достигает определенного порога.

По умолчанию Navigation SDK выдает незначительное предупреждение о скорости, когда водитель превышает ограничение скорости на 5 миль в час (или 10 км/ч), и меняет цвет текста спидометра на красный. Он активирует серьезное предупреждение о превышении скорости, когда водитель превышает ограничение скорости на 10 миль в час (или 20 км/ч), и меняет цвет фона спидометра на красный.

Вы можете настроить как порог срабатывания предупреждений, так и цвет текста и фона, отображаемый спидометром. Вы также можете использовать Navigation SDK, чтобы сделать доступной информацию о скорости водителя в соответствии с установленными вами пороговыми значениями. Например, вы можете предоставить информацию о скорости операторам совместных поездок, чтобы помочь им побудить своих водителей соблюдать ограничение скорости и повысить безопасность.

Настройте пороговые значения для предупреждений о скорости

Вы можете настроить порог предупреждения о скорости как для второстепенных, так и для серьезных предупреждений о скорости в процентах от ограничения текущей скорости. Вы также можете указать, как долго будет превышен порог, прежде чем на карте появится предупреждение.

В следующем примере кода пороговое значение для незначительного предупреждения о скорости устанавливается на пять процентов выше ограничения скорости, а пороговое значение для серьезного предупреждения о скорости — на 10 процентов выше ограничения скорости. Он указывает, что на карте отображается предупреждение после превышения порога предупреждения в течение пяти секунд.

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

Настройте способ отображения на спидометре предупреждений о скорости.

Чтобы сделать оповещения о скорости более привлекательными, вы можете настроить цвета дисплея спидометра для каждого уровня оповещения.

В следующей таблице показаны цвета по умолчанию для предупреждений о скорости в классе NavigationView :

Элемент Цвет
НезначительныйСкоростьОповещениеФонЦветДеньРежим 0xffffff (белый)
НезначительныйСкоростьОповещениеФонЦветНочьРежим 0x000000
MinorSpeedAlertTextColorDayMode 0xd93025
MinorSpeedAlertTextColorNightMode 0xd93025
ОсновнойСкоростьОповещениеФонЦветДеньРежим 0xd93025
ОсновныеСкоростьОповещениеФонЦветНочьРежим 0xd93025
MajorSpeedAlertTextColorDayMode 0xffffff (белый)
MajorSpeedAlertTextColorNightMode 0xffffff (белый)

Вы можете указать цвет текста и фона спидометра как для второстепенных, так и для основных предупреждений о скорости:

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

Получайте информацию о скорости от водителей

Если ваше приложение требует обмена информацией о скорости водителя, вы также можете использовать Navigation SDK, чтобы сделать информацию о скорости водителя доступной. Это может быть полезно для приложений совместного пользования, в которых оператор может захотеть отслеживать превышение скорости водителями для повышения безопасности. Это также можно сделать без необходимости отображать пользователю представление навигации в вашем приложении.

Например, в следующем примере совместно используются сведения о скорости, когда скорость превышает заданный процент скорости:

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