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

Когда навигация включена, 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);