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

При включенной навигации 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 :

Элемент Цвет
MinorSpeedAlertBackgroundColorDayMode 0xffffff(белый)
MinorSpeedAlertBackgroundColorNightMode 0x000000
MinorSpeedAlertTextColorDayMode 0xd93025
MinorSpeedAlertTextColorNightMode 0xd93025
MajorSpeedAlertBackgroundColorDayMode 0xd93025
MajorSpeedAlertBackgroundColorNightMode 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);