Когда навигация включена, Navigation SDK для Android показывает в левом нижнем углу карты элемент управления с текущим ограничением скорости. Если пользователь превышает ограничение скорости, элемент управления расширяется, чтобы показать спидометр рядом с ограничением скорости, и запускает оповещения, когда скорость достигает определенного порога.
По умолчанию Navigation SDK активирует незначительное предупреждение о превышении скорости, когда пользователь превышает ограничение скорости на 5 миль/ч (или 10 км/ч), и меняет цвет текста спидометра на красный. Если пользователь превышает ограничение скорости на 10 миль/ч (или 20 км/ч), приложение выдает предупреждение о значительном превышении скорости и меняет цвет фона спидометра на красный.
Вы можете настроить пороговое значение для срабатывания оповещений, а также цвета текста и фона, которые отображаются на спидометре. Вы также можете использовать Navigation SDK, чтобы показывать пользователю информацию о скорости в соответствии с заданными вами пороговыми значениями. Например, вы можете предоставить информацию о скорости операторам райдшеринга, чтобы они могли поощрять своих пользователей за соблюдение скоростного режима и повышать безопасность.
Как настроить пороговые значения для предупреждений о превышении скорости
Вы можете настроить порог срабатывания предупреждений о незначительном и значительном превышении скорости в процентах от текущего ограничения скорости. Вы также можете указать, через какое время после превышения порогового значения на карте должно появиться оповещение.
В следующем примере кода порог для незначительного превышения скорости устанавливается на уровне 5 % от ограничения скорости, а для значительного – на уровне 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 NavigationFragment.
navigationFragment.setSpeedometerUiOptions(speedometerUiOptionsBuilder.build());
navigationFragment.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);