Konfigurowanie zakłóceń w czasie rzeczywistym
Zakłócenia w czasie rzeczywistym to zbiór funkcji, które ostrzegają użytkowników o zakłóceniach na trasie i umożliwiają im zgłaszanie i weryfikowanie napotkanych zakłóceń. Przykłady utrudnień to wypadki samochodowe, korki, obecność policji i fotoradarów, roboty drogowe, zamknięte pasy ruchu i określone warunki pogodowe. Na tej stronie znajdziesz informacje o funkcjach powiadomień o utrudnieniach w czasie rzeczywistym i ich opcjach konfiguracji, w tym o kwestiach, które należy wziąć pod uwagę w przypadku aplikacji korzystających z niestandardowych interfejsów nawigacji.
Funkcje dotyczące utrudnień w czasie rzeczywistym
Pakiet SDK do nawigacji zawiera te funkcje dotyczące zakłóceń w czasie rzeczywistym, które są częścią podstawowego środowiska nawigacji:- Interaktywne wywołania dotyczące zakłóceń na trasach
- Automatyczne alerty o utrudnieniach z możliwością głosowania podczas aktywnej nawigacji.
- Zgłaszanie utrudnień podczas aktywnej nawigacji
Te funkcje można skonfigurować i są domyślnie włączone. Więcej informacji o funkcjach i dostępnych opcjach konfiguracji znajdziesz w kolejnych sekcjach.
Interaktywne wywołania dotyczące utrudnień na trasach
Gdy aplikacja wyświetla trasę, w podsumowaniu trasy lub podczas aktywnej nawigacji, wszelkie bieżące utrudnienia pojawiają się jako etykiety wzdłuż trasy. Gdy włączysz warstwę ruchu, na mapie pojawią się też utrudnienia na trasie. Wywołania zawierają ikonę wskazującą typ zakłócenia.
Wyświetlanie wywołań dotyczących zakłóceń na trasach możesz kontrolować za pomocą parametru setTrafficPromptsEnabled, który kontroluje też wyświetlanie automatycznych alertów, gdy użytkownik zbliża się do zakłócenia.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Wyświetlanie szczegółów zakłóceń, gdy użytkownik kliknie wywołanie
Kliknięcie powiadomienia o zakłóceniu spowoduje otwarcie karty informacyjnej z dodatkowymi szczegółami. Dotyczy to zarówno wywołań na trasie, jak i poza nią, przy czym wywołania poza trasą pojawiają się tylko wtedy, gdy włączona jest warstwa ruchu. Karta zawiera typ zakłócenia, czas ostatniego zgłoszenia i czasami opcję głosowania, czy zakłócenie nadal występuje. Typ karty informacyjnej i jej opcje konfiguracji różnią się w zależności od tego, czy użytkownik korzysta z aktywnej nawigacji.
Karty informacyjne w przeglądach trasy przed rozpoczęciem aktywnej nawigacji
Przed rozpoczęciem aktywnej nawigacji użytkownicy mogą kliknąć na mapie lub w podsumowaniu trasy wywołanie w trakcie trasy lub poza nią, aby otworzyć kartę informacji. Wywołania poza trasą wymagają włączenia warstwy ruchu. Karta informacyjna zawiera więcej szczegółów o zakłóceniu.
Za pomocą parametru setTrafficIncidentCardsEnabled możesz kontrolować, czy użytkownicy mogą klikać wywołania zakłóceń w przeglądach tras, aby wyświetlać więcej informacji.
// Using the SupportNavigationFragment mNavFragment.setTrafficIncidentCardsEnabled(true); // Using the NavigationView navigationView.setTrafficIncidentCardsEnabled(true);
Karty informacyjne podczas aktywnej nawigacji
Podczas aktywnej nawigacji użytkownicy mogą kliknąć powiadomienie o utrudnieniach na trasie lub poza nią, aby otworzyć kartę informacyjną. Karta zawiera typ zakłócenia i czas ostatniego zgłoszenia oraz przyciski, za pomocą których użytkownicy mogą głosować, czy zakłócenie nadal występuje.
Głosowanie jest dostępne w przypadku utrudnień na trasie i poza nią w odległości do 5 km od użytkownika, z wyłączeniem zamknięć dróg. Google przetwarza te głosy, aby określić, czy nadal wyświetlać informacje o zakłóceniach. Głosy mogą też być widoczne na mapie dla innych użytkowników pakietów Google Maps i Navigation SDK.
Wyświetlanie i kliknięcia powiadomień o utrudnieniach podczas aktywnej nawigacji możesz kontrolować za pomocą ustawienia
setTrafficPromptsEnabled
, które wpływa też na
wyświetlanie powiadomień na trasach i
wyświetlanie automatycznych alertów, gdy użytkownik zbliża się do utrudnienia.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Automatyczne alerty o utrudnieniach z możliwością głosowania podczas aktywnej nawigacji
Gdy użytkownik zbliża się do utrudnienia na trasie podczas aktywnej nawigacji, wyświetla się komunikat z informacjami o utrudnieniu i przyciskami do głosowania, czy utrudnienie nadal występuje. Głosy przesłane przez użytkowników są przetwarzane przez Google i mogą być wyświetlane na mapie innym użytkownikom Map Google i pakietu SDK do nawigacji. Mogą też być wykorzystywane do określania, czy nadal wyświetlać utrudnienie.
Wyświetlanie alertów podczas aktywnej nawigacji możesz skonfigurować za pomocą ustawienia
setTrafficPromptsEnabled
, które kontroluje też wyświetlanie wskazówek na trasach.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Zgłaszanie utrudnień podczas aktywnej nawigacji
W trybie aktywnej nawigacji w interfejsie nawigacji pojawia się przycisk, który umożliwia użytkownikom zgłaszanie nowych utrudnień na trasie. Gdy użytkownik kliknie przycisk, pojawi się menu z dostępnymi typami zakłóceń, które można zgłosić. Zgłoszenia przesyłane przez użytkowników są przetwarzane przez Google i mogą być wyświetlane na mapie innym użytkownikom pakietów Google Maps i Navigation SDK.
Zgłoszenie zamknięcia drogi może spowodować wyświetlenie alternatywnej trasy, która omija zablokowany odcinek. Użytkownik zostanie poproszony o potwierdzenie lub odrzucenie zmiany trasy. Dostępność tej funkcji może być ograniczona.
Wyświetlanie i ukrywanie przycisku raportowania standardowego
Widoczność standardowego przycisku raportowania podczas aktywnej nawigacji możesz skonfigurować za pomocą parametru
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);
Dodawanie niestandardowego przycisku zgłaszania
Zamiast standardowego przycisku zgłaszania zakłóceń możesz dodać do interfejsu nawigacji przycisk niestandardowy. Gdy użytkownik kliknie przycisk niestandardowy, możesz wywołać wyświetlenie menu raportowania, wywołując metodę showReportIncidentsPanel. Przed dodaniem niestandardowego przycisku zgłaszania sprawdź, czy aplikacja jest w aktywnej nawigacji, a użytkownik znajduje się w kraju, w którym zgłaszanie jest włączone. W tym celu wywołaj funkcję isIncidentReportingAvailable. Jeśli któryś z tych warunków nie jest spełniony, menu zgłaszania się nie pojawi.
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());
Praca z niestandardowymi interfejsami nawigacji
Jeśli Twoja implementacja pakietu Navigation SDK zawiera niestandardowe elementy interfejsu, musisz uwzględnić elementy zakłóceń w czasie rzeczywistym, aby uniknąć konfliktów.
Położenie przycisku zgłaszania
Domyślnie przycisk zgłaszania zakłóceń jest umieszczony w dolnym rogu mapy – po prawej stronie w przypadku języków pisanych od lewej do prawej i po lewej stronie w przypadku języków pisanych od prawej do lewej. Jeśli chcesz przenieść przycisk zgłaszania, aby zrobić miejsce na niestandardowe elementy interfejsu, dodaj niestandardowy element sterującyBOTTOM_END_BELOW lub FOOTER, który przesunie przycisk w górę ekranu. Umieszczenie własnych niestandardowych interfejsów w elementach sterujących niestandardowych
zapewnia też, że wszystkie komunikaty wyświetlane przez pakiet Navigation SDK są prawidłowo nakładane na Twoje
elementy interfejsu niestandardowego. Jeśli nie możesz używać niestandardowych elementów sterujących, użyj interfejsu Prompt Visibility API, aby zarządzać potencjalnymi konfliktami interfejsu.
Prompt Visibility API (eksperymentalny)
Interfejs Prompt Visibility API pomaga uniknąć konfliktów między elementami interfejsu wygenerowanymi przez pakiet Navigation SDK a własnymi elementami interfejsu, dodając odbiornik, który otrzymuje wywołanie zwrotne, zanim pojawi się element interfejsu pakietu Navigation SDK i gdy tylko zostanie on usunięty. Możesz otrzymywać wywołania zwrotne dotyczące elementów zakłóceń w czasie rzeczywistym, w tym kart informacyjnych, promptów i menu zgłaszania zakłóceń, a także innych powiadomień generowanych przez 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)