Настройка сбоев в режиме реального времени
Функции оповещения о сбоях в режиме реального времени — это набор возможностей, которые оповещают пользователей о сбоях на их маршруте и позволяют им сообщать о сбоях и подтверждать их. Примеры сбоев включают дорожно-транспортные происшествия, пробки, присутствие полиции и камер контроля скорости, строительные работы, перекрытие полос движения и определенные погодные условия. На этой странице описаны функции оповещения о сбоях в режиме реального времени и параметры их настройки, включая рекомендации для приложений, использующих пользовательские интерфейсы навигации.
Функции реагирования на сбои в режиме реального времени
В состав 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);
Информационные карточки-выноски во время активной навигации
Когда во время активной навигации на маршруте появляется предупреждение о сбое, пользователи могут нажать на него, чтобы отобразить информационную карточку с более подробной информацией о сбое, включая тип сбоя и время последнего сообщения о нем, а также кнопки для голосования о том, сохраняется ли сбой. Голоса, поданные пользователями, обрабатываются 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)