Mengonfigurasi gangguan real-time
Gangguan real-time adalah kumpulan fitur yang memberi tahu pengguna tentang gangguan di sepanjang rute mereka dan memungkinkan pengguna melaporkan serta memverifikasi gangguan yang mereka alami. Contoh gangguan mencakup kecelakaan kendaraan, kemacetan lalu lintas, keberadaan polisi dan kamera pengukur kecepatan, konstruksi, penutupan jalur, dan kondisi cuaca tertentu. Halaman ini menjelaskan fitur gangguan real-time dan opsi konfigurasinya, termasuk pertimbangan untuk aplikasi yang menggunakan UI navigasi kustom.
Fitur gangguan real-time
Navigation SDK menyertakan fitur gangguan real-time berikut sebagai bagian dari pengalaman navigasi inti:- Info gangguan interaktif di sepanjang rute.
- Notifikasi gangguan otomatis dengan voting selama navigasi aktif.
- Pelaporan gangguan selama navigasi aktif.
Fitur ini dapat dikonfigurasi dan diaktifkan secara default. Bagian berikut memberikan informasi selengkapnya tentang fitur dan opsi konfigurasi yang tersedia.
Info gangguan interaktif di sepanjang rute
Saat aplikasi menampilkan rute, baik dalam ringkasan rute maupun selama navigasi aktif, gangguan saat ini akan muncul sebagai info di sepanjang rute. Jika Anda mengaktifkan lapisan lalu lintas, gangguan di luar rute juga akan muncul di peta. Alat info mencakup ikon yang menunjukkan jenis gangguan.
Anda dapat mengontrol tampilan info gangguan di sepanjang rute menggunakan setTrafficPromptsEnabled, yang juga mengontrol tampilan pemberitahuan otomatis saat pengguna mendekati gangguan.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Menampilkan detail gangguan saat pengguna mengetuk info
Mengetuk info gangguan akan membuka kartu info dengan detail selengkapnya. Hal ini berlaku untuk info di rute dan di luar rute, meskipun info di luar rute hanya muncul jika lapisan lalu lintas diaktifkan. Kartu ini menampilkan jenis gangguan, waktu terakhir gangguan dilaporkan, dan terkadang opsi untuk memberikan suara apakah gangguan masih ada. Jenis kartu info dan opsi konfigurasinya bervariasi, bergantung pada apakah pengguna berada dalam navigasi aktif.
Kartu info info di ringkasan rute, sebelum memulai navigasi aktif
Sebelum memulai navigasi aktif, pengguna dapat mengetuk info dalam rute atau di luar rute pada peta atau ringkasan rute untuk membuka kartu info. Info di luar rute memerlukan lapisan lalu lintas untuk diaktifkan. Kartu info memberikan detail selengkapnya tentang gangguan tersebut.
Anda dapat mengontrol kemampuan pengguna untuk mengetuk info gangguan pada ringkasan rute guna menampilkan informasi
selengkapnya menggunakan
setTrafficIncidentCardsEnabled
.
// Using the SupportNavigationFragment mNavFragment.setTrafficIncidentCardsEnabled(true); // Using the NavigationView navigationView.setTrafficIncidentCardsEnabled(true);
Kartu info info selama navigasi aktif
Selama navigasi aktif, pengguna dapat mengetuk info gangguan dalam rute atau di luar rute untuk membuka kartu info. Kartu ini menampilkan jenis gangguan dan waktu terakhir dilaporkan, serta menyertakan tombol bagi pengguna untuk memberikan suara apakah gangguan masih ada.
Pemungutan suara tersedia untuk gangguan dalam rute dan di luar rute dalam jarak 5 km dari pengguna, tidak termasuk penutupan jalan. Google memproses suara ini untuk membantu menentukan apakah akan terus menampilkan gangguan tersebut. Suara juga dapat muncul di peta untuk pengguna Google Maps dan Navigation SDK lainnya.
Anda dapat mengontrol tampilan dan kemampuan ketuk info gangguan selama navigasi aktif menggunakan
setTrafficPromptsEnabled
, yang juga mengontrol
tampilan info di sepanjang rute dan
tampilan pemberitahuan otomatis saat pengguna mendekati gangguan.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Notifikasi gangguan otomatis dengan voting selama navigasi aktif
Selama navigasi aktif, saat pengguna mendekati gangguan di sepanjang rute, perintah akan muncul dengan informasi tentang gangguan tersebut dan tombol untuk memberikan suara apakah gangguan tersebut masih ada. Suara yang dikirimkan oleh pengguna akan diproses oleh Google dan dapat ditampilkan di peta untuk pengguna Google Maps dan Navigation SDK lainnya, serta digunakan untuk menentukan apakah akan terus menampilkan gangguan.
Anda dapat mengonfigurasi tampilan dialog pemberitahuan selama navigasi aktif menggunakan
setTrafficPromptsEnabled
, yang juga mengontrol tampilan
info di sepanjang rute.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Pelaporan gangguan selama navigasi aktif
Selama mode navigasi aktif, tombol akan muncul di UI navigasi yang memungkinkan pengguna melaporkan gangguan baru di sepanjang rute mereka. Saat pengguna mengetuk tombol, menu dengan jenis gangguan yang tersedia untuk dilaporkan akan muncul. Laporan yang dikirimkan pengguna akan diproses oleh Google dan dapat ditampilkan di peta untuk pengguna Google Maps dan Navigation SDK lainnya.
Melaporkan penutupan jalan dapat menampilkan rute alternatif untuk melewati segmen yang diblokir, sehingga pengguna diminta untuk mengonfirmasi atau menolak pengalihan rute. Fitur ini bergantung pada ketersediaan.
Menampilkan atau menyembunyikan tombol pelaporan standar
Anda dapat mengonfigurasi visibilitas tombol pelaporan standar selama navigasi aktif menggunakan
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);
Menambahkan tombol pelaporan kustom
Sebagai pengganti tombol pelaporan gangguan standar, Anda dapat menambahkan tombol pelaporan kustom ke
UI navigasi. Saat pengguna mengklik tombol kustom, Anda dapat memicu tampilan menu pelaporan
dengan memanggil metode showReportIncidentsPanel. Sebelum menambahkan tombol pelaporan kustom, pastikan aplikasi dalam navigasi aktif dan pengguna berada di negara tempat pelaporan diaktifkan dengan memanggil isIncidentReportingAvailable. Jika salah satu dari hal ini tidak terpenuhi,
menu pelaporan tidak akan muncul.
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());
Menggunakan UI navigasi kustom
Jika penerapan Navigation SDK Anda menyertakan elemen UI kustom, Anda perlu mempertimbangkan elemen gangguan real-time untuk menghindari konflik.
Penempatan tombol pelaporan
Secara default, tombol pelaporan gangguan diposisikan di ujung bawah/sudut akhir peta—di sisi kanan untuk bahasa yang ditulis dari kiri ke kanan dan sisi kiri untuk bahasa yang ditulis dari kanan ke kiri. Jika Anda perlu memindahkan tombol pelaporan untuk memberi ruang bagi elemen UI kustom, tambahkan kontrol kustomBOTTOM_END_BELOW atau FOOTER, yang akan mendorong posisi tombol ke atas di layar. Menempatkan UI kustom Anda sendiri dalam kontrol kustom
juga memastikan bahwa setiap perintah yang ditampilkan oleh Navigation SDK dilapisi dengan benar di atas
elemen UI kustom Anda saat ditampilkan. Jika Anda tidak dapat menggunakan kontrol kustom, gunakan
Prompt Visibility API untuk mengelola potensi konflik UI.
Prompt Visibility API (Eksperimental)
Prompt Visibility API membantu Anda menghindari konflik antara elemen UI yang dihasilkan oleh Navigation SDK dan elemen UI kustom Anda sendiri dengan menambahkan pemroses untuk menerima callback sebelum elemen UI Navigation SDK akan muncul dan segera setelah elemen tersebut dihapus. Anda dapat menerima callback untuk elemen gangguan real-time, termasuk kartu info, perintah, dan menu pelaporan gangguan—serta untuk notifikasi lain yang dihasilkan oleh 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)