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