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

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