Pengantar
Navigation SDK (Nav SDK) menyediakan fitur belokan demi belokan terbaik di kelasnya yang dapat sangat membantu pelanggan dan pengemudi, terutama pengemudi baru atau pengemudi yang tidak familiar dengan wilayah tersebut. Namun, ada kasus penggunaan tertentu saat perusahaan tidak ingin mengalihkan perhatian pengemudi dari jalan dengan UI navigasi belokan demi belokan, tetapi tetap ingin melacak lokasi kendaraan dan memantau peristiwa yang terkait dengan rute yang mereka ikuti. Salah satu contohnya adalah pengemudi truk, terutama jika mereka mengangkut bahan berbahaya. Perusahaan lain yang melakukan pengiriman menggunakan modalitas yang berbeda - seperti berjalan untuk jarak pendek - mungkin juga tidak memerlukan panduan belokan demi belokan, sehingga menghemat daya tahan baterai perangkat.
Cakupan
Dokumen ini menjelaskan cara perusahaan dapat menyembunyikan peta Navigasi (tampilan) dari Nav SDK dan tetap mendapatkan manfaat dari semua fitur Nav SDK terkait pelacakan lokasi, langganan peristiwa, dan callback. Data yang diambil dari Nav SDK dalam mode tanpa antarmuka pengguna dapat digunakan untuk meningkatkan kemampuan melacak kendaraan dan memahami perkiraan waktu kedatangan dengan lebih tepat yang pada akhirnya meningkatkan transparansi dan efisiensi.
Navigation SDK
Navigation SDK adalah library Android / iOS native yang ditambahkan ke aplikasi pengemudi. Dalam konteks mobilitas, SDK ini bertanggung jawab untuk:
- Mendapatkan lokasi yang disesuaikan dengan jalan dari aplikasi yang menjalankannya. Lokasi yang disesuaikan dengan jalan lebih akurat daripada FusedLocationProvider (FLP) Android, karena menggunakan jaringan jalan Google untuk menyesuaikan lokasi dengan segmen jalan terdekat, sehingga ETA dan informasi lain dari FLP jauh lebih akurat.
- Pengalaman belokan demi belokan yang memungkinkan pengemudi mencapai titik B dari titik A secara efisien dengan mempertimbangkan lalu lintas real-time dan batasan rute lainnya.
- Memicu peristiwa berdasarkan progres rute, lokasi, kecepatan, dll. melalui pemroses peristiwa dan callback terdaftar.
Pengalaman default
Saat pelanggan menerapkan Nav SDK, diasumsikan bahwa mereka memerlukan fitur panduan belokan demi belokan. Itulah sebabnya dokumentasi Nav SDK (Android dan iOS) memberikan petunjuk tentang cara menerapkan Nav SDK dengan navigasi belokan demi belokan yang diaktifkan.
Di Android, peta belokan demi belokan di aplikasi dirender menggunakan SupportNavigationFragment atau NavigationView, sedangkan di iOS menggunakan GMSMapView. Elemen UI ini menambahkan peta interaktif dan UI navigasi belokan demi belokan ke aplikasi Anda.
Di bagian berikutnya, kita akan membandingkan kode SDK Nav default dengan kode yang mengaktifkan panduan belokan demi belokan dengan kode SDK Nav tanpa UI untuk Android dan iOS, serta menandai perubahan yang diperlukan.
Solusi
Android
Di Android, ini adalah kode Java yang disertakan sebagai bagian dari aplikasi contoh Nav SDK.
@Override
@SuppressLint("MissingPermission")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Obtain a reference to the NavigationFragment
setContentView(R.layout.activity_nav_fragment);
mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
Seperti yang dapat Anda lihat, tampilan mengarah ke tata letak yang harus digunakan untuk menggambar pengalaman navigasi dan, dalam hal ini, SupportNavigationFragment dibuat, bukan NavigationView.
Untuk membuat Nav SDK dimulai dalam mode headless, kita cukup menghapus dua petunjuk tersebut. Jika tujuannya adalah beralih antara headless dan non-headless (navigasi aktif), variabel dapat digunakan untuk menentukan apakah headless harus digunakan atau tidak, misalnya:
Boolean mHeadless = true;
Kemudian, variabel tersebut dapat digunakan nanti, seperti ini:
@Override
@SuppressLint("MissingPermission")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Obtain a reference to the NavigationFragment
if(!mHeadless) {
setContentView(R.layout.activity_nav_fragment);
mNavFragment =
(SupportNavigationFragment)
getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
}
Variabel mHeadless
dapat ditautkan ke komponen UI (yaitu tombol) yang akan mengaktifkan atau menonaktifkan headless.
![]() |
![]() |
Nav SDK berjalan dengan navigasi aktif (headless nonaktif) | Aplikasi yang sama, tetapi kini dengan Nav SDK yang berjalan dalam mode headless |
Seperti yang dapat Anda lihat pada contoh kanan di atas, navigasi Nav SDK berjalan di balik layar, tetapi pengalaman belokan demi belokan dinonaktifkan.
iOS
Di iOS, mode tanpa tampilan dapat dilakukan dengan sangat mudah dengan menambahkan setelan berikut selama inisialisasi MapView: \
mapView.isHidden = true
Contoh:
/// The main map view.
private lazy var mapView: GMSMapView = {
let mapView = GMSMapView(frame: .zero)
mapView.isHidden = true /// Make it headless!
mapView.isNavigationEnabled = true
mapView.settings.compassButton = true
mapView.delegate = self
return mapView
}()
Lihat tampilannya - layar akan bergantung pada cara UI diimplementasikan dan screenshot hanya untuk mengilustrasikan efek menyembunyikan mapView:
![]() |
![]() |
Navigasi aktif berjalan di
Aplikasi contoh iOS |
Aplikasi yang sama dalam mode headless |
Pertimbangan Penerapan
Karena mode tanpa tampilan hanyalah menyembunyikan peta navigasi dari layar, hanya waktu layar yang dihemat sehingga menghasilkan waktu penggunaan baterai yang lebih lama di perangkat. Namun, karena Nav SDK akan terus berjalan, update lokasi dan semua callback peristiwa akan dipicu secara normal, sehingga tidak ada efek samping dalam menggunakan konfigurasi ini.
Kesimpulan
Dokumen ini menunjukkan fleksibilitas Nav SDK dan apa yang dapat kita capai di berbagai sistem operasi mengingat batasannya. Fitur ini juga memungkinkan pelanggan menyesuaikan pengalaman mengemudi mereka untuk menghindari gangguan dan meningkatkan keselamatan.
Referensi Tambahan
Jika notifikasi harus dinonaktifkan selama navigasi, karena alasan yang disebutkan di atas, hal ini juga dapat dilakukan. Lihat Mengubah notifikasi belokan demi belokan di Nav SDK.