Android Automotive intent'leri aracılığıyla Google Haritalar'da navigasyonu başlatabilirsiniz.
Genel Bakış
Bu sayfada, Android Automotive için Google Haritalar ile kullanabileceğiniz intent'ler açıklanmaktadır. Ayrıntılı Android geliştirici dokümanları için aşağıdakilere bakın:
Intent istekleri
Android Automotive için Google Haritalar'ı bir intent ile başlatmak istiyorsanız öncelikle işlemini, URI'sini ve paketini belirterek bir Intent
nesnesi oluşturmanız gerekir.
İşlem. Tüm Google Haritalar intent'leri Görüntüle işlemi olarak çağrılır (
ACTION_VIEW
).URI. Google Haritalar intent'leri, seçilen bir işlemi belirten URI kodlanmış dizeleri ve işlemi gerçekleştirmek için kullanılacak bazı verileri kullanır.
Paket.
setPackage("com.google.android.apps.maps")
çağrısı, Android için Google Haritalar uygulamasının Intent'i işlemesini sağlar. Paket ayarlanmamışsa sistem, hangi uygulamaların Intent'i işleyebileceğini belirler. Birden fazla uygulama varsa kullanmak istediğiniz uygulamayı seçmeniz istenebilir.
Intent'i oluşturduktan sonra sistemin ilgili uygulamayı başlatmasını çeşitli şekillerde isteyebilirsiniz. Yaygın bir yöntem, Intent'i startActivity()
yöntemine iletmektir. Sistem, gerekli uygulamayı (bu durumda Google Haritalar) başlatır ve ilgili Activity
'ı başlatır.
// 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);
Sistem, intent'e yanıt verebilecek bir uygulamayı tanımlayamazsa uygulamanız kilitlenebilir. Bu nedenle, bu intent'lerden birini kullanıcıya sunmadan önce önce alıcı uygulamanın yüklü olup olmadığını doğrulayın.
Bir uygulamanın niyeti alıp alamayacağını doğrulamak için Intent
nesnenizde resolveActivity()
işlevini çağırın. Sonuç null değilse intent'i işleyebilecek en az bir uygulama vardır ve startActivity()
çağrılabilir. Sonuç null ise intent'i kullanmamalı ve mümkünse intent'i çağıran özelliği devre dışı bırakmalısınız.
if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}
Örneğin, Sydney'deki Taronga Hayvanat Bahçesi'ne adım adım yol tarifi başlatmak için aşağıdaki kodu kullanabilirsiniz:
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);
}
URI kodlanmış sorgu dizeleri
Google Haritalar Intent'lerine iletilen tüm dizeler URI kodlamasına sahip olmalıdır. Örneğin, "1st & Pike, Seattle" dizesi 1st%20%26%20Pike%2C%20Seattle
olmalıdır.
Dizedeki boşluklar %20
ile kodlanabilir veya artı işaretiyle (+) değiştirilebilir.
Dizelerinizi kodlamak için android.net.Uri parse()
yöntemini kullanabilirsiniz. Örneğin:
Uri mapIntentUri = Uri.parse("google.navigation:q=" + Uri.encode("1st & Pike, Seattle"));
Adım adım navigasyonu başlatma
Belirtilen bir veya daha fazla adrese ya da koordinata adım adım yol tarifleri içeren Google Haritalar navigasyonunu başlatmak için bu niyeti kullanın. Yol tarifleri her zaman kullanıcının mevcut konumundan verilir.
google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
google.navigation:place=placename
Parametreler
Navigasyonu başlatmak için place
veya q
ile waypoints
'yi kullanın (isteğe bağlıdır). İsteğe bağlı olarak bir yol işaretini şarj istasyonu olarak işaretlemek için Google Haritalar'a elektrikli araç seyahat planı gönderme başlıklı makaleyi inceleyin.
q
, gezinme aramalarının bitiş noktasını belirler. Bu, bir enlem ve boylam veya sorgu biçimli bir adres olabilir. Birden fazla sonuç döndüren bir sorgu dizesiyse ilk sonuç seçilir.place
, uç noktayı eve veya işe ayarlar. Kullanıcının evine gitmek için ev, iş yerine gitmek için iş seçeneğini belirleyin.avoid
, rotanın kaçınmaya çalışması gereken özellikleri belirler.avoid
isteğe bağlıdır ve aşağıdakilerden biri veya daha fazlası olarak ayarlanabilir:- Geçiş ücretleri için
t
h
otoyollar için- Feribotlar için
f
- Geçiş ücretleri için
waypoints
, yol tarifininq
tarafından belirtilen nihai hedefe yönlendirilmesi için bir veya daha fazla ara yer belirtir. Yerleri ayırmak için dikey çizgi karakterini (|
) kullanarak birden fazla yol noktası belirtebilirsiniz (ör.Berlin,Germany|Paris,France
). Gerektiği kadar yol noktası kullanabilirsiniz. Yol işaretleri, URL'de listelendikleri sırayla rotaya eklenir. Her yol noktası bir adres veya virgül ile ayrılmış enlem ve boylam koordinatları olabilir. Ayrıca aynı intent'te adresler ve enlem ile boylam koordinatları olabilir. Dizeler URL'den kaçan olmalıdır. Bu nedenle, "Berlin,Almanya|Paris,Fransa" gibi yol işaretleriBerlin%2CGermany%7CParis%2CFrance
olarak dönüştürülmelidir.
Örnekler
Bu Intent, Avustralya'nın Sidney kentindeki Taronga Hayvanat Bahçesi'ne adım adım yol tarifi isteğinde bulunur:
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);
Otoyol ücreti ödemeyi veya feribot kullanmayı tercih etmiyorsanız aşağıdaki durumlardan kaçınmaya çalışan bir rota isteğinde bulunabilirsiniz:
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);
Evinize gitmek isterseniz şunu kullanın:
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);
Aşağıdaki üç adrese sırayla adım adım yol tarifi başlatmak için nihai hedef olarak Taronga Hayvanat Bahçesi'ni q
, yol işaretleri olarak da Google Sydney ve Sydney Opera Evi'ni girin:
Google Sidney
Sidney Opera Binası
Taronga Zoo, Sidney, Avustralya
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);
q
'e benzer şekilde, yol noktalarından herhangi birini adres yerine virgülle ayrılmış enlem ve boylamla temsil edebilirsiniz. Örneğin, adres yerine Sidney Opera Binası'nın enlem ve boylamını göndererek aynı navigasyonu başlatmak için:
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);
Google Haritalar'a elektrikli araç gezi planı gönderme
Bazı hedefleri elektrikli araç (EV) şarj istasyonları olarak belirtmek için bu çok hedefli gezinme amacını kullanın. Çok yol noktası intent'ini genişleten bu intent, sürücülerin elektrikli araç gezi planlama uygulamaları ile Google Haritalar arasında şarj noktası bilgilerini senkronize ederek varış noktalarına ulaşmak için yeterli elektrikli araç pili şarjına sahip olmasına yardımcı olur.
Şarj noktaları için gezi amaçları:
- Ad ve enlem-boylam içermelidir.
- İsteğe bağlı olarak şarj süresini hesaplamak için güç çıkışı içerebilir
Google, bağlayıcı türleri, toplamlar, hızlar ve anlık müsaitlik durumu, desteklenen ödeme yöntemleri ve ana ilgi çekici yerler (ÖY) gibi zengin verileri görüntülemek için şarj istasyonu adını ve enlem-boylam bilgisini kullanarak eşleşen bir şarj istasyonu yeri bulur. Örneğin, navigasyonun son kısmı için açık otoparklardaki sürüş talimatları, çalışma saatleri, puanlar. Şarj istasyonlarının Google verileriyle iyi eşleştiğinden emin olmak için <brand name>
kullanın (ör. ChargePoint
).
Parametreler
Aşağıdaki parametreler, nihai varış noktası ve elektrikli araç şarj istasyonu olarak tanımlananlar da dahil olmak üzere tüm yol noktalarının ayrıntılarını belirtmenize olanak tanır.
Nihai varış noktası
Nihai hedef olarak bir şarj istasyonu ayarlamak için:
q
: Şarj istasyonunun enlem-boylam değerini içermelidir.q_type
:1
, nihai varış noktasının bir şarj istasyonu olduğunu belirtir.q_name
: Son varış noktasının adı.q_type
1
ise zorunludur.q_power_output_kw
: Şarj istasyonunun güç çıkışı için kilovat cinsinden çift haneli sayı. İsteğe bağlıdır.
Ara noktalar
Yol işaretleri için tüm parametreler, nihai hedef hariç olmak üzere yol işaretleriyle aynı sıradaki paralel, |-ayrılmış değer dizileridir. Paralel dizilerdeki öğe sayısındaki uyuşmazlık, hatalı biçimlendirilmiş bir intent olarak değerlendirilir.
Bir veya daha fazla şarj istasyonu yol noktası eklemek için aşağıdaki parametreleri kullanın. Bunların tümü isteğe bağlıdır. Hedeflerden biri şarj istasyonu olarak işaretlenmişse bu hedef için yol noktası adı zorunlu hale gelir.
waypoints
: Adım adım navigasyon intent'inde açıklandığı şekilde yol işaretlerinin listesi. Şarj istasyonu yol noktaları için enlem-boylam değeri olmalıdır.waypoint_types
: Bir sayı olarak belirtilen yol noktası başına tür.0
herhangi bir durak (varsayılan değer) ve1
şarj istasyonudur.waypoint_names
: Yol noktası adları. Bu alan, şarj istasyonları için zorunludur.waypoint_power_outputs_kw
: Şarj istasyonu gücü için kilowatt cinsinden çift sayılar. Şarj istasyonları için isteğe bağlı olarak bir yol noktası güç çıkışı değeri belirtebilirsiniz. Bu değer, eşleşen istasyon bulunamazsa yedek olarak kullanılır. Boş slot, herhangi bir değer sağlanmadığı anlamına gelir.
Kullanıcı deneyimi (UX) davranışı
Birden fazla hedefi olan gezi isteklerinde, rotaya genel bakış ekranı gösterilir ancak navigasyon otomatik olarak başlatılmaz.
Doğru biçimlendirilmiş bir intent için Google Haritalar, seyahat için rotaya genel bakış ekranı gösterir. Rotaya genel bakış ekranında, geçerli olduğu durumlarda şarj önerileriyle birlikte intent'teki tüm yol noktaları ve nihai varış noktası gösterilir.
Şarj istasyonu olarak işaretlenen tüm yol noktaları veya nihai hedefler için Google Haritalar, Google'ın veritabanında eşleşen bir yer arar. Şarj istasyonları için mümkün olan en iyi bilgilerin gösterilmesini sağlamak amacıyla:
Eşleşme bulunursa Google Haritalar, şarj istasyonunu kullanıcı arayüzünde (UA) görüntülemek ve şarj istasyonu için şarj önerisi sunmak amacıyla Google verilerini kullanır.
Eşleşme bulunamazsa şarj istasyonu için intent'te sağlanan veriler (enlem-boylam, ad ve güç çıkışı), bu şarj istasyonunu kullanıcı arayüzünde görüntülemek ve bu şarj istasyonunda şarj önerisi sunmak için kullanılır.
Örnekler
Aşağıdaki örneklerde, birden fazla şarj istasyonunda gezinme ve bilinmeyen güç çıkışlarını işleme dahil olmak üzere çeşitli elektrikli araç gezisi planlama senaryoları için intent'lerin nasıl oluşturulacağı gösterilmektedir.
Birden fazla şarj istasyonunu kullanarak nihai hedefe gitme
Aşağıdaki intent, ChargePoint ve Evie adlı iki şarj istasyonundan geçerek nihai hedef olan Port Macquarie NSW'ye gider.
Hedefler sırayla:
ChargePoint Şarj İstasyonu (konum: -32.9599188,151.6240806, güç çıkışı: 6,6 kw)
Evie Şarj İstasyonu (konum: -31,9432539,152,4699808, güç çıkışı: 350 kw)
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);
Bilinmeyen güç çıkışı
Güç çıkışı değeri bilinmiyorsa waypoint_power_outputs_kw
ile ilgili ilgili alanı boş bırakın. Tüm yuvalar boşsa waypoint_power_outputs_kw
parametresini belirtmeniz gerekmez.
Hedefler sırayla:
ChargePoint Şarj İstasyonu (konum: -32.9599188,151.6240806, güç çıkışı: bilinmiyor)
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);
Nihai varış noktasını şarj istasyonu olarak işaretleme
Nihai varış noktasını şarj istasyonu olarak işaretlemek için q_type
, q_name
ve q_power_output_kw
parametrelerini belirtin.
Hedefler sırayla:
Taronga Zoo, Sidney, Avustralya
ChargePoint Şarj İstasyonu (konum: -32.9599188,151.6240806, güç çıkışı: bilinmiyor)
Evie Şarj İstasyonu (konum: -31.9432539,152.4699808, güç çıkışı: 350 kw)
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);
İşlem amaçları
Arayüzleri olan aşağıdaki işlem intent'leri kullanılabilir:
İşlem | Açıklama |
---|---|
geo.action:?act=mute |
Tüm navigasyon sesli rehberlerinin sesini kapatır. |
geo.action:?act=unmute |
Navigasyon sesli rehberinin sesini açar. |
geo.action:?act=show_traffic |
Haritada trafik çizgilerini gösterir. |
geo.action:?act=hide_traffic |
Haritada trafik çizgilerini gizler. |
geo.action:?act=show_satellite |
Haritada uydu görüntülerini gösterir. |
geo.action:?act=hide_satellite |
Haritadaki uydu görüntülerini gizler. |
geo.action:?act=show_alternates |
Google Haritalar, alternatif rotalar ekranını açar (yalnızca navigasyon sırasında çalışır). |
geo.action:?act=query_next_turn |
Google Haritalar, bir sonraki dönemeci sesli olarak söyler (yalnızca navigasyon sırasında çalışır). |
geo.action:?act=distance_to_next_turn |
Google Haritalar, bir sonraki dönemece olan mesafeyi söyler (yalnızca navigasyon sırasında çalışır). |
geo.action:?act=time_to_next_turn |
Google Haritalar, bir sonraki dönemece kadar ne kadar süre kaldığını söyler (yalnızca navigasyon sırasında çalışır). |
geo.action:?act=distance_to_destination |
Google Haritalar, hedefe olan mesafeyi söyler (yalnızca navigasyon sırasında çalışır). |
geo.action:?act=go_back |
Google Haritalar, kullanıcı arayüzünde önceki ekrana geri döner. |
geo.action:?act=query_current_road |
Google Haritalar, mevcut yolu okur. |
geo.action:?act=query_destination |
Google Haritalar hedefi sesli olarak söyler. |
geo.action:?act=traffic_report |
Google Haritalar, trafik raporunu sesli olarak okur. |
geo.action:?act=clear_search_results |
Google Haritalar, arama sonuçları ekranını (açıksa) kapatır. |
geo.action:?act=apply_electric_vehicle_connector_filter |
Elektrikli araç şarj istasyonu arama sonuçları için konnektör türü filtresini uygular. |
geo.action:?act=remove_electric_vehicle_connector_filter |
Elektrikli araç şarj istasyonu arama sonuçları için konnektör türü filtresini kaldırır. |
geo.action:?act=apply_electric_vehicle_payment_filter |
Elektrikli araç şarj istasyonu arama sonuçları için ödeme filtresini uygular. |
geo.action:?act=remove_electric_vehicle_payment_filter |
Elektrikli araç şarj istasyonu arama sonuçları için ödeme filtresini kaldırır. |
geo.action:?act=apply_electric_vehicle_fast_charging_filter |
Elektrikli araç şarj istasyonu arama sonuçları için hızlı şarj filtresini uygular. |
geo.action:?act=remove_electric_vehicle_fast_charging_filter |
Elektrikli araç şarj istasyonu arama sonuçları için hızlı şarj filtresini kaldırır. |
geo.action:?act=avoid_tolls |
Kullanıcı navigasyon yapıyorsa Google Haritalar'a, geçiş ücreti olan rotalardan kaçınmasını söyler. Mevcut rota ücretli yollardan geçiyorsa bu durum rotanın yeniden planlanmasına neden olabilir. |
geo.action:?act=allow_tolls |
Kullanıcı navigasyon yapıyorsa Google Haritalar'a, ücretli yolların bulunduğu rotalara izin vermesini söyler. Otoyol ücretlerine izin verilmesi daha iyi bir rotanın kullanılabilmesine yol açarsa bu durum rotanın yeniden planlanmasına neden olabilir. |
geo.action:?act=avoid_ferries |
Kullanıcı navigasyon yapıyorsa Google Haritalar'a feribotların bulunduğu rotalardan kaçınmasını söyler. Bu işlem, mevcut etkin rotanın feribot içermesi durumunda rotanın yeniden planlanmasına yol açabilir. |
geo.action:?act=allow_ferries |
Kullanıcı navigasyon yapıyorsa Google Haritalar'a feribot içeren rotalara izin vermesini söyler. Feribotlara izin verilmesi daha iyi bir rotanın kullanılabilmesine yol açarsa bu durum rotanın yeniden belirlenmesine neden olabilir. |
geo.action:?act=avoid_highways |
Kullanıcı navigasyon yapıyorsa Google Haritalar'a otoyolların bulunduğu rotalardan kaçınma Mevcut etkin rota otoyol içeriyorsa bu işlem yeniden rota oluşturmaya neden olabilir. |
geo.action:?act=allow_highways |
Kullanıcı navigasyon yapıyorsa Google Haritalar'a otoyolların bulunduğu rotalara izin vermesini söyler. Otoyollara izin verilmesi daha iyi bir rotanın kullanılabilmesine yol açarsa bu durum yeniden rota belirlemeyle sonuçlanabilir. |
geo.action:?act=eta |
Kullanıcı navigasyon yapıyorsa Google Haritalar, hedefe tahmini varış süresini (ör. 9:15) sesli olarak belirtir. |
geo.action:?act=time_to_destination |
Kullanıcı navigasyon yapıyorsa Google Haritalar, varış noktasına kadar geçecek beklenen süreyi (örneğin, 15 dakika) söyler. |
geo.action:?act=exit_navigation |
Navigasyondan çıkar. |
geo.action:?act=select_search_result&id=0 |
Arama sonuçları ekranda gösteriliyorsa (ekteki resimde gösterildiği gibi) sağlanan kimlik parametresine göre n. sonuça gitmeye başlar. Dizin 0 tabanlı olduğundan (yani geo.action:?act=select_search_result&id=0 listedeki ilk sonucu seçer) dikkat edin.
|