Настройка сбоев в режиме реального времени
Функции оповещения о сбоях в режиме реального времени — это набор возможностей, которые оповещают пользователей о сбоях на их маршруте и позволяют им сообщать о сбоях и подтверждать их. Примеры сбоев включают дорожно-транспортные происшествия, пробки, присутствие полиции и камер контроля скорости, строительные работы, перекрытие полос движения и определенные погодные условия. На этой странице описаны функции оповещения о сбоях в режиме реального времени и параметры их настройки, включая рекомендации для приложений, использующих пользовательские интерфейсы навигации.
Функции реагирования на сбои в режиме реального времени
В состав Navigation SDK входят следующие функции, имитирующие сбои в реальном времени, которые являются частью основной системы навигации:- Интерактивные оповещения о сбоях в работе транспорта вдоль маршрутов .
- Автоматические оповещения о сбоях с возможностью голосования во время активной навигации .
- Сообщение о сбоях во время активной навигации .
Эти функции настраиваются и включены по умолчанию. В следующих разделах представлена более подробная информация о функциях и доступных параметрах конфигурации.
Интерактивные оповещения о сбоях в работе транспорта вдоль маршрутов
Когда приложение отображает маршрут, будь то в обзоре маршрута или во время активной навигации, любые текущие препятствия отображаются в виде всплывающих подсказок вдоль маршрута. При включении слоя с информацией о дорожной ситуации на карте также отображаются препятствия, находящиеся вне маршрута. Всплывающие подсказки содержат значок, указывающий на тип препятствия.

Вы можете управлять отображением предупреждений о сбоях на маршрутах с помощью setTrafficPromptsEnabled , который также управляет отображением автоматических оповещений, когда пользователь приближается к месту сбоя .
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Отображение подробной информации о сбое при нажатии пользователем на всплывающее окно.
При нажатии на сообщение о нарушении открывается информационная карточка с более подробной информацией. Это относится как к сообщениям на маршруте, так и к сообщениям вне маршрута, хотя сообщения вне маршрута отображаются только в том случае, если включен слой информации о дорожной ситуации. Карточка отображает тип нарушения, время последнего сообщения и иногда возможность проголосовать за то, сохраняется ли нарушение. Тип информационной карточки и параметры ее настройки различаются в зависимости от того, находится ли пользователь в активном режиме навигации.
Информационные карточки с описанием маршрута, которые отображаются перед началом активной навигации.
Перед началом активной навигации пользователи могут коснуться на карте или в обзоре маршрута пункта, расположенного на маршруте или вне его, чтобы открыть информационную карточку. Для отображения пунктов, расположенных вне маршрута, необходимо включить слой с информацией о дорожной ситуации. Информационная карточка предоставляет более подробную информацию о возникшей проблеме.

С помощью setTrafficIncidentCardsEnabled вы можете управлять возможностью пользователей нажимать на всплывающие подсказки о сбоях в обзоре маршрута для отображения дополнительной информации.
// Using the SupportNavigationFragment mNavFragment.setTrafficIncidentCardsEnabled(true); // Using the NavigationView navigationView.setTrafficIncidentCardsEnabled(true);
Информационные карточки-выноски во время активной навигации
Во время активной навигации пользователи могут коснуться вывески о сбое на маршруте или вне его, чтобы открыть информационную карточку. На карточке отображается тип сбоя и время последнего сообщения о нем, а также кнопки для голосования, позволяющие определить, сохраняется ли сбой до сих пор.
Доступно голосование по поводу перебоев в движении на маршруте и вне его в радиусе 5 км от пользователя, за исключением перекрытий дорог. Google обрабатывает эти голоса, чтобы определить, следует ли продолжать отображать информацию о перебоях в движении. Голоса также могут отображаться на карте для других пользователей Google Maps и Navigation SDK.

Вы можете управлять отображением и возможностью нажатия на всплывающие подсказки о сбоях во время активной навигации с помощью setTrafficPromptsEnabled , который также управляет отображением всплывающих подсказок вдоль маршрутов и отображением автоматических оповещений, когда пользователь приближается к сбою .
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Автоматические оповещения о сбоях с возможностью голосования во время активной навигации.
Во время активной навигации, когда пользователь приближается к препятствию на маршруте, появляется сообщение с информацией о препятствии и кнопками для голосования о том, сохраняется ли оно. Голоса, поданные пользователями, обрабатываются Google и могут отображаться на карте для других пользователей Google Maps и Navigation SDK, а также использоваться для определения того, следует ли продолжать показывать препятствие.

Вы можете настроить отображение всплывающих уведомлений во время активной навигации с помощью setTrafficPromptsEnabled , который также управляет отображением всплывающих подсказок вдоль маршрутов .
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Сообщение о сбоях во время активной навигации
В режиме активной навигации на пользовательском интерфейсе появляется кнопка, позволяющая пользователям сообщать о новых препятствиях на своем маршруте. При нажатии на кнопку появляется меню с доступными типами препятствий для сообщения. Сообщения, отправленные пользователями, обрабатываются Google и могут отображаться на карте для других пользователей Google Maps и Navigation SDK.
Сообщение о закрытии дороги может предложить альтернативный маршрут для объезда заблокированного участка, с возможностью подтверждения или отклонения изменения маршрута. Эта функция доступна при наличии соответствующих настроек.


Показать или скрыть стандартную кнопку отчета
Вы можете настроить видимость стандартной кнопки отчета во время активной навигации с помощью setReportIncidentButtonEnabled .
// Enables the incident reporting button to show in situations where incident // reporting is possible. // Using the SupportNavigationFragment mNavFragment.setReportIncidentButtonEnabled(true); // Using the NavigationView navigationView.setReportIncidentButtonEnabled(true);
Добавьте пользовательскую кнопку для создания отчетов.
Вместо стандартной кнопки сообщения о сбоях вы можете добавить пользовательскую кнопку сообщения о сбоях в навигационный интерфейс. Когда пользователь нажимает на пользовательскую кнопку, вы можете вызвать отображение меню сообщений о сбоях, вызвав метод showReportIncidentsPanel . Перед добавлением пользовательской кнопки сообщения о сбоях убедитесь, что приложение находится в активной навигации и пользователь находится в стране, где включена функция отправки сообщений о сбоях, вызвав метод isIncidentReportingAvailable . Если хотя бы одно из этих условий не выполняется, меню сообщений о сбоях не появится.
Button customReportIncidentButton = findViewById(R.id.custom_reporting_button); // Check if reporting is available before displaying your button customReportIncidentButton.setVisibility( navigationView.isReportingAvailable ? View.VISIBLE : View.GONE); // Trigger the reporting flow if the button is clicked customReportIncidentButton.setOnClickListener(v -> navigationView.showReportIncidentsPanel());
Работа с пользовательскими интерфейсами навигации
Если ваша реализация Navigation SDK включает пользовательские элементы интерфейса, вам необходимо учитывать элементы, влияющие на работу системы в реальном времени, чтобы избежать конфликтов.
Расположение кнопки «Отчет»
По умолчанию кнопка сообщения о сбоях располагается в нижнем углу карты — справа для языков с направлением письма слева направо и слева для языков с направлением письма справа налево. Если вам нужно переместить кнопку сообщения, чтобы освободить место для пользовательских элементов интерфейса, добавьте пользовательский элемент управленияBOTTOM_END_BELOW или FOOTER , который сдвинет кнопку вверх по экрану. Размещение собственных пользовательских элементов интерфейса внутри пользовательских элементов управления также гарантирует, что любые подсказки, отображаемые Navigation SDK, будут корректно накладываться на ваши пользовательские элементы интерфейса во время отображения. Если вы не можете использовать пользовательские элементы управления, используйте API Prompt Visibility для управления потенциальными конфликтами пользовательского интерфейса.API для отображения подсказок (экспериментальная версия)
API Prompt Visibility помогает избежать конфликтов между элементами пользовательского интерфейса, созданными Navigation SDK, и вашими собственными пользовательскими элементами интерфейса, добавляя обработчик событий для получения обратного вызова перед появлением элемента пользовательского интерфейса Navigation SDK и сразу после его удаления. Вы можете получать обратные вызовы для элементов, вызывающих сбои в реальном времени, включая информационные карточки, подсказки и меню отчетов о сбоях, а также для других уведомлений, генерируемых Navigation SDK.// Sample listener val listener: PromptVisibilityChangedListener = { isVisible -> if (isVisible) { customFab.visibility = false customFooter.visibility = false moveSomeOtherThingsAround() } else { customFab.visibility = true customFooter.visibility = true moveSomeThingsBackToWhereTheyWereBefore() } } // Inside onCreate() navigationView.addPromptVisibilityChangedListener(listener) // Inside onDestroy() navigationView.removePromptVisibilityChangedListener(listener)