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