Uygulama geliştiricilerin, kullanıcı gizliliğine saygı göstermek için yalnızca yaklaşık konum izinleri istemesi önerilir. Yaklaşık olarak yaklaşık konum alınması gereken uygulamalar, hızlı olduğu ve daha az güç tükettiği için genellikle çok kaynaklı ağ konumunu (FLP) kullanır. Android tabanlı mobil cihazlarla karşılaştırıldığında, otomotiv uygulamalarındaki ağ konumu daha zor olabilir. İki Android API'si kullanabilirsiniz:
LocationManager API, tercih edilen konum sağlayıcısını açık bir şekilde tanımlamak için
requestLocationUpdates
kullanmanızı gerektirir.Google Play Services API,
FusedLocationProviderClient
'te konumla çalışmanız için daha basit bir yol sunar.
Birçok otomotiv uygulaması, LocationManager
yerine Google Play Services API'den alınan FLP'yi kullanır. FLP, aracın ihtiyaç duyduğu konum isteği kriterleri ve politikalarına (güç ve doğruluk) göre en uygun konum sağlayıcıyı seçer.
Bunun yerine, android.permission.ACCESS_FINE_LOCATION
izinlerini kullanan ince konumlar için NETWORK_PROVIDER
'i ve GPS_PROVIDER
'i açıkça isteyip kullanmayı tercih edebilirsiniz. Daha önce yalnızca Google Play Services API üzerinden erişilebilen FUSED_PROVIDER
, Android 12 (API düzeyi 31) ve sonraki sürümlerde LocationManager
için konum sağlayıcısı olarak kullanılabiliyor. FLP uygulamasını FusedLocationProvider.java
sayfasında görebilirsiniz.
GPS_PROVIDER
kullanımı yalnızca genel izin hakları ile de kullanılabilir (çerçeve, beklentilere uyum sağlamak için doğruluğu yapay olarak düşürür), genel kullanılabilirlik yetersizdir ve yaklaşık konumu elde etmek genellikle daha yavaş olduğundan Android telefonları hedefleyen geliştiriciler için bu pek bir anlam ifade etmez.
Otomotivde ağ konumu
Android telefonlarda kullanılan NETWORK_PROVIDER
(Google Mobil Hizmetleri ile), konumu yakındaki baz istasyonlarına, kablosuz erişim noktalarına ve Bluetooth (BT) işaretçilerine göre belirler. Bu nedenle NETWORK_PROVIDER
için veri bağlantısı gerekebilir.
Otomotiv uygulamaları için cihaz kısıtlamaları farklıdır. G genel navigasyon uydu sistemi (GNSS) genellikle açık olduğundan artan güç ve pil kullanımı nedeniyle herhangi bir ceza uygulanmaz. Sonuç olarak, IVI çalışma süresi tehlikeye girmez. Sunucularımız arasındaki veri alışverişini en aza indirmek için çaba gösteriyoruz.
Bu nedenle birçok uygulama, konum isteği kriterlerini/politikalarını (yani güç ve doğruluk) en iyi şekilde karşılayabilen konum sağlayıcıyı kullanarak akıllı işi otomatik olarak yaptığı için birçok uygulama doğrudan LocationManager
yerine Play API'den FLP kullanır.
Mobil cihazlardan farklı olarak araçlar nadiren bir yerden diğerine atlıyor. Aracın konumu çoğu zaman kaputun altında bilinir.
Ağ konumu sağlayıcı (NLP)
Çoğu araç, hücre kimliği (ve sinyal gücü) hakkında gerekli bilgileri almak için gerekli telefon API'lerini uygulamaz. Sonuç olarak, veri kullanımını en aza indirdiğimiz için NLP'nin fazladan işlevsel bir uygulaması sağlanmamaktadır.
Çok kaynaklı konum sağlayıcı
Mobil FLP, ağ ve GPS sağlayıcılarını uygun şekilde akıllıca kullanmanın yanı sıra, konumların kalitesini daha da artırmak için diğer sensörlerden gelen bilgileri birleştirir. Öte yandan, Automotive FLP'nin mevcut uygulaması, yukarıda belirtilen varsayımlardan yararlanır ve temel kaynak olarak GPS_PROVIDER
daima kullanılır. GNSS'deki konumları değiştirerek gerektiğinde daha fazla yanlışlık olması için bazı hataları ekler. Örneğin, bir müşteriye yaklaşık konum sağlandığında.
Bu nedenle, çok az sayıda örnekte ilk konumun kullanılabilir olması için normalden daha uzun bir süre olabilir. Örneğin, bir araç ilk kez veya daha kesin ifade etmek gerekirse konum alt sistemi kullanıldığında ya da araç çekildikten sonra.
Mobil ve otomotiv kullanımlarını hedefleyecek uygulamalar tasarlama
Daha yüksek hassasiyet gerektirmeyen mobil ve otomotiv cihazlarını hedefleyen uygulamalar için android.permission.ACCESS_COARSE_LOCATION
yalnızca istekte bulunun ve mümkün olduğunda FLP kullanmaya devam edin. Alternatif olarak, GPS_PROVIDER
ürününü doğrudan aynı izinlerle kullanabilirsiniz. Çerçeve, API beklentileriyle uyum sağlamak için temel GNSS konumunun kesinliğini düşürür. Daha fazla bilgi edinmek için Konum izinleri isteme başlıklı makalenin Doğruluk bölümünü inceleyin.
Ayrıca bu uygulamalar, android.hardware.location.network
özelliğini manifest dosyalarında isteğe bağlı olarak açıkça beyan etmelidir. Örnek:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
Bu yaklaşım, çeşitli sektörlerdeki cihazlarla maksimum uyumluluğu ve dolayısıyla, gerektiğinde konum almak için kod farklılığı olmadan maksimum uygulama kullanılabilirliğini sağlar.