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

Когда навигация включена, SDK навигации для Android отображает в левом нижнем углу карты индикатор ограничения скорости, показывающий текущее ограничение скорости. Если пользователь превышает ограничение скорости, индикатор расширяется, отображая спидометр рядом с индикатором ограничения скорости, и запускает оповещения, когда скорость достигает определенного порогового значения.

По умолчанию, SDK навигации срабатывает небольшое предупреждение о превышении скорости, когда пользователь превышает ограничение скорости на 5 миль в час (или 10 км/ч), и меняет цвет текста на спидометре на красный. Оно срабатывает значительное предупреждение о превышении скорости, когда пользователь превышает ограничение скорости на 10 миль в час (или 20 км/ч), и меняет цвет фона спидометра на красный.

Вы можете настроить как пороговое значение для срабатывания оповещений, так и цвет текста и фона, отображаемых на спидометре. Вы также можете использовать 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 :

Элемент Цвет
MinorSpeedAlertBackgroundColorDayMode 0xffffff(белый)
MinorSpeedAlertBackgroundColorNightMode 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);