Intent Google Maps untuk Android Automotive

Pernyataan penyangkalan

Produk/fitur ini akan berubah dan tidak tunduk pada perjanjian tingkat layanan (SLA) atau kebijakan penghentian layanan. Penerapan ini dapat berubah dalam rilis mendatang.

Mengenai software contoh, file data, dan/atau kode sumber yang menyertai dokumentasi ini: Produk ini disediakan "sebagaimana adanya" dan tanpa jaminan dalam bentuk apa pun, dan Google secara tegas menyangkal setiap dan semua jaminan, baik tersurat, tersirat, berdasarkan hukum, atau lainnya, termasuk tanpa batasan jaminan kelayakan untuk diperdagangkan, kesesuaian untuk tujuan tertentu, dan ketiadaan pelanggaran hak apa pun terkait dengan produk ini.


Melalui intent Android Automotive, Anda dapat meluncurkan navigasi di Google Maps.

Untuk informasi selengkapnya, lihat Intent Google Maps untuk Android.

Untuk mengetahui informasi selengkapnya tentang cara menghadirkan aplikasi Anda ke kendaraan yang menjalankan Android Auto atau Android Automotive OS, lihat Android untuk Mobil.

Ringkasan

Halaman ini menjelaskan intent yang dapat Anda gunakan dengan Google Maps untuk Android Automotive. Untuk dokumentasi developer Android yang mendetail, baca:

Permintaan intent

Guna meluncurkan Google Maps untuk Android Automotive dengan intent, Anda harus terlebih dahulu membuat objek Intent, yang menentukan tindakan, URI, dan paketnya.

  • Tindakan. Semua intent Google Maps disebut sebagai tindakan View, ACTION_VIEW.

  • URI. Intent Google Maps menggunakan string berenkode URI yang menentukan tindakan yang diinginkan, beserta beberapa data yang digunakan untuk melakukan tindakan tersebut.

  • Paket. Memanggil setPackage("com.google.android.apps.maps") memastikan aplikasi Google Maps untuk Android menangani Intent. Jika paket tidak ditetapkan, sistem akan menentukan aplikasi yang dapat menangani Intent. Jika beberapa aplikasi tersedia, Anda mungkin akan ditanya aplikasi mana yang ingin Anda gunakan.

Setelah membuat Intent, Anda dapat meminta agar sistem meluncurkan aplikasi terkait dalam beberapa cara. Metode yang umum adalah meneruskan Intent ke metode [startActivity()]. Sistem akan meluncurkan aplikasi yang diperlukan, dalam hal ini, Google Maps, dan memulai Aktivitas yang sesuai.

// Create a Uri from an intent string. Use the result to create an Intent.
Uri mapIntentUri =
Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
// Create an Intent from mapIntentUri. Set the action to ACTION_VIEW
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps");
// Attempt to start an activity that can handle the Intent
startActivity(mapIntent);

Jika sistem tidak dapat mengidentifikasi aplikasi yang dapat merespons Intent, aplikasi Anda dapat mengalami error. Oleh karena itu, verifikasi terlebih dahulu bahwa aplikasi penerima diinstal sebelum Anda menampilkan salah satu intent ini kepada pengguna.

Untuk memverifikasi bahwa aplikasi tersedia untuk menerima intent, panggil [resolveActivity()] pada objek [Intent] Anda. Jika hasilnya bukan null, setidaknya ada satu aplikasi yang dapat menangani intent tersebut dan aman untuk memanggil [startActivity()]. Jika hasilnya null, Anda tidak boleh menggunakan intent tersebut dan, jika memungkinkan, nonaktifkan fitur yang memanggil intent.

if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}

Misalnya, untuk meluncurkan navigasi belokan demi belokan ke Taronga Zoo di Sydney, Anda dapat menggunakan kode berikut:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}

String kueri yang dienkode URI

Semua string yang diteruskan ke Maksud Google Maps harus dienkode dalam URI. Misalnya, string "1st & Pike, Seattle" akan menjadi 1st%20%26%20Pike%2C%20Seattle. Spasi dalam string ini dapat dienkode dengan %20 atau diganti dengan tanda plus (+).

Anda dapat menggunakan metode android.net.Uri parse() untuk mengenkode string. Contoh:

Uri mapIntentUri = Uri.parse("google.navigation:q=" + Uri.encode("1st & Pike, Seattle"));

Meluncurkan navigasi belokan demi belokan

Gunakan intent ini untuk meluncurkan navigasi Google Maps dengan rute belokan demi belokan ke satu atau beberapa alamat atau koordinat yang ditentukan. Rute selalu diberikan dari lokasi pengguna saat ini.

google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
google.navigation:place=placename

Parameter

Untuk meluncurkan navigasi, gunakan place atau q dengan waypoints, yang bersifat opsional. Untuk menandai titik jalan sebagai SPKLU, lihat Mengirim rencana perjalanan kendaraan listrik ke Google Maps.

  • q menetapkan titik akhir untuk penelusuran navigasi. Ini dapat berupa lintang/bujur atau alamat berformat kueri. Jika itu adalah string kueri yang menampilkan lebih dari satu hasil, maka hasil pertama yang akan dipilih.

  • place menetapkan endpoint ke rumah atau kantor. Tentukan rumah untuk menavigasi ke rumah pengguna, dan kantor untuk menavigasi ke tempat kerja pengguna.

  • avoid menetapkan fitur yang harus dihindari rute. avoid bersifat opsional dan dapat ditetapkan ke satu atau beberapa:

    • t untuk jalan tol
    • h untuk jalan raya
    • f untuk feri
  • waypoints menentukan satu atau beberapa tempat perantara untuk merutekan rute ke tujuan akhir yang ditentukan oleh q. Anda dapat menetapkan beberapa titik jalan menggunakan karakter pipa (|) untuk memisahkan tempat -- misalnya, Berlin,Germany|Paris,France. Anda dapat menggunakan titik jalan sebanyak yang diperlukan. Titik jalan akan ditambahkan ke rute dengan urutan yang sama seperti yang tercantum di URL. Setiap titik jalan dapat berupa alamat atau koordinat lintang/bujur yang dipisahkan koma; dan, Anda dapat memasukkan alamat dan koordinat lintang/bujur dalam intent yang sama. String harus di-escape URL, jadi titik jalan seperti "Berlin,Jerman|Paris,Prancis" harus dikonversi menjadi Berlin%2CGermany%7CParis%2CFrance.

Contoh

Intent ini akan meminta navigasi belokan demi belokan ke Taronga Zoo, di Sydney, Australia:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Jika Anda memilih untuk tidak membayar tol atau naik feri, Anda dapat meminta pemilihan rute yang mencoba menghindari situasi berikut:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Atau jika Anda lebih suka menuju ke rumah Anda, gunakan:

Uri mapIntentUri = Uri.parse("google.navigation:place=home");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Untuk meluncurkan navigasi belokan demi belokan ke tiga alamat berikut secara berurutan, lewati Taronga Zoo sebagai tujuan akhir q, dan Google Sydney dan Opera House sebagai titik jalan:

  1. Google Sydney

  2. Sydney Opera House

  3. Kebun Binatang Taronga, Sydney, Australia

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7CSydney+Opera+House");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Serupa dengan q, Anda dapat merepresentasikan titik jalan dengan lintang dan bujur yang dipisahkan koma, bukan alamat. Misalnya, untuk meluncurkan navigasi yang sama sambil meneruskan garis bujur untuk Sydney Opera House, bukan alamat:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7C-33.856159,151.215256");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Mengirim rencana perjalanan kendaraan listrik ke Google Maps

Gunakan intent navigasi multi-tujuan ini untuk menentukan beberapa tujuan sebagai pemberhentian pengisian daya kendaraan listrik (EV). Intent ini, yang memperluas intent multi-titik jalan, membantu pengemudi mempertahankan daya baterai kendaraan listrik yang memadai untuk mencapai tujuan mereka dengan menyinkronkan informasi perhentian pengisian daya antara aplikasi perencanaan perjalanan Kendaraan Listrik dan Google Maps.

Untuk perhentian pengisian daya, intent perjalanan:

  • Harus berisi nama dan lat-long
  • Dapat berisi output daya secara opsional, yang akan digunakan untuk menghitung waktu pengisian daya

Google menggunakan nama SPKLU dan lat-long untuk menemukan tempat SPKLU yang cocok untuk menampilkan data lengkap seperti jenis konektor, total, kecepatan dan ketersediaan real-time, metode pembayaran yang didukung, dan lokasi menarik (POI) host. Misalnya, rute mobil di tempat parkir luar ruangan untuk bagian akhir navigasi, jam buka, rating. Untuk memastikan SPKLU cocok dengan data Google, gunakan <brand name>, misalnya ChargePoint.

Parameter

Tujuan akhir

Untuk menetapkan SPKLU sebagai tujuan akhir, gunakan:

  • q: Harus berisi nilai lintang SPKLU.
  • q_type: 1 menentukan bahwa tujuan akhirnya adalah SPKLU.
  • q_name: Nama tujuan akhir. Wajib jika q_type adalah 1.
  • q_power_output_kw: Angka ganda untuk output daya SPKLU dalam kilowatt. Opsional.

Titik jalan

Untuk titik jalan, semua parameter adalah array nilai paralel yang dipisahkan | dalam urutan yang sama seperti titik jalan, tidak termasuk tujuan akhir. Ketidakcocokan dalam jumlah elemen dalam array paralel akan diperlakukan sebagai format intent yang salah.

Untuk menambahkan satu atau beberapa titik jalan SPKLU, gunakan parameter berikut, yang semuanya bersifat opsional. Jika salah satu tujuan ditandai sebagai stasiun pengisian daya, nama titik jalan menjadi wajib untuk tujuan tersebut.

  • waypoints: Daftar titik jalan seperti yang dijelaskan dalam intent navigasi belokan demi belokan. Harus berupa nilai lintang untuk titik jalan stasiun pengisian daya.

  • waypoint_types: Jenis per titik jalan yang ditetapkan sebagai angka. 0 adalah perhentian mana pun (nilai default) dan 1 adalah SPKLU.

  • waypoint_names: Nama titik jalan. Kolom ini wajib diisi untuk stasiun pengisian daya.

  • waypoint_power_outputs_kw: Angka ganda untuk daya SPKLU dalam kilowatt. Untuk SPKLU, Anda dapat secara opsional menentukan nilai output daya titik jalan, yang digunakan sebagai penggantian jika stasiun yang cocok tidak ditemukan. Slot kosong berarti tidak ada nilai yang diberikan.

Perilaku pengalaman pengguna (UX)

Untuk intent perjalanan dengan beberapa tujuan, layar ringkasan rute akan ditampilkan, tetapi navigasi tidak dimulai secara otomatis.

Untuk intent yang diformat dengan benar, Google Maps akan menampilkan layar ringkasan rute untuk perjalanan tersebut. Layar ringkasan rute akan menampilkan semua titik jalan dan tujuan akhir dari intent, dengan rekomendasi pengisian daya jika berlaku.

Untuk titik jalan atau tujuan akhir yang ditandai sebagai SPKLU, Google Maps akan menelusuri tempat yang cocok dalam database Google.

Jika kecocokan ditemukan, Google Maps akan menggunakan data Google untuk menampilkan stasiun pengisian daya di antarmuka pengguna (UI) dan memberikan rekomendasi pengisian daya untuk SPKLU. Jika kecocokan tidak ditemukan, data yang diberikan dalam intent untuk stasiun pengisian daya (lat-long, nama, dan output daya) akan digunakan untuk menampilkan SPKLU ini di UI dan memberikan rekomendasi pengisian daya di SPKLU ini.

Contoh

Navigasi ke tujuan akhir melalui beberapa SPKLU

Intent berikut menavigasi ke tujuan akhir, Port Macquarie NSW, melalui dua SPKLU, ChargePoint dan Evie.

Tujuan secara berurutan:

  1. Stasiun Pengisian Daya ChargePoint (lokasi: -32.9599188,151.6240806, output daya: 6,6 kw)

  2. Stasiun Pengisian Evie (lokasi: -31.9432539,152.4699808, output daya: 350kw)

  3. Port Macquarie NSW

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=Port+Macquarie+NSW"
            + "&waypoints=-32.9599188%2C151.6240806%7C-31.9432539%2C152.4699808"
            + "&waypoint_types=1%7C1"
            + "&waypoint_names=ChargePoint+Charging+Station%7CEvie+Charging+Station"
            + "&waypoint_power_outputs_kw=6.6%7C350");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Output daya tidak diketahui

Jika nilai output daya tidak diketahui, kosongkan slot yang relevan waypoint_power_outputs_kw. Atau, jika semua slot kosong, Anda tidak perlu menentukan parameter waypoint_power_outputs_kw.

Tujuan secara berurutan:

  1. Stasiun Pengisian ChargePoint (lokasi: -32.9599188,151.6240806, output daya: tidak diketahui)

  2. Port Macquarie NSW

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=Port+Macquarie+NSW"
            + "&waypoints=-32.9599188%2C151.6240806"
            + "&waypoint_types=1"
            + "&waypoint_names=ChargePoint+Charging+Station");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Menandai tujuan akhir sebagai SPKLU

Untuk menandai tujuan akhir sebagai SPKLU, tentukan parameter q_type, q_name, dan q_power_output_kw.

Tujuan secara berurutan:

  1. Kebun Binatang Taronga, Sydney, Australia

  2. Stasiun Pengisian ChargePoint (lokasi: -32.9599188,151.6240806, output daya: tidak diketahui)

  3. Stasiun Pengisian Evie (lokasi: -31.9432539,152.4699808, output daya: 350kw)

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=-31.9432539,152.4699808&q_type=1&q_name=Evie+Charging+Station&q_power_output_kw=350"
            + "&waypoints=Taronga+Zoo%2C+Sydney+Australia%7C-32.9599188%2C151.6240806"
            + "&waypoint_types=0%7C1"
            + "&waypoint_names=%7CChargePoint+Charging+Station"
            + "&waypoint_power_outputs_kw=%7C");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);