Uygulama geliştiricilerin, kullanıcı gizliliğine saygı duymak için yalnızca kaba konum izinleri istemeleri önerilir. Yaklaşık kaba konum gerektiren uygulamalar genellikle hızlı olduğu ve daha az güç tükettiği için birleştirilmiş ağ konumunu (FLP) kullanır. Android tabanlı mobil cihazlara kıyasla, otomotiv uygulamalarında ağ konumunu belirlemek daha zor olabilir. İki Android API'si kullanabilirsiniz:
LocationManager API, tercih edilen konum sağlayıcıyı açıkça tanımlamak için
requestLocationUpdateskullanmanızı gerektirir.Google Play Hizmetleri API'si,
FusedLocationProviderClient'de konumla çalışmak için daha basit bir yol sunar.
Birçok otomotiv uygulaması, LocationManager yerine Google Play Hizmetleri API'sindeki FLP'yi kullanır. FLP, araç için gereken konum isteği ölçütlerine ve politikalara (güç ve doğruluk) göre en uygun konum sağlayıcıyı seçer.
Bunun yerine, android.permission.ACCESS_FINE_LOCATION izinlerini kullanan hassas konumlar için NETWORK_PROVIDER ve GPS_PROVIDER izinlerini açıkça isteyip kullanmayı tercih edebilirsiniz. Android 12 (API düzeyi 31) ve sonraki sürümlerde, daha önce yalnızca Google Play Hizmetleri API'si aracılığıyla erişilebilen FUSED_PROVIDER, LocationManager için konum sağlayıcı olarak kullanılabilir. FLP'nin FusedLocationProvider.java'deki uygulamasını görebilirsiniz.
GPS_PROVIDER'yı yalnızca kaba izin haklarıyla kullanmak mümkün olsa da (çerçeve, beklentilere uygun olması için doğruluğu yapay olarak düşürür) genel kullanılabilirlik düşük olduğundan ve kaba konum elde etmek genellikle daha yavaş olduğundan Android telefonları hedefleyen geliştiriciler için bu pek mantıklı değildir.
Otomotivde ağ konumu
Android telefonlarda (Google Mobil Hizmetleri ile) kullanılan NETWORK_PROVIDER, konumu yakındaki baz istasyonlarına, kablosuz ağ 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ında cihaz kısıtlamaları farklıdır. Küresel navigasyon uydu sistemi (GNSS) genellikle açık olduğundan, güç ve pil kullanımının artması nedeniyle herhangi bir ceza uygulanmaz. Bu sayede IVI çalışma süresi etkilenmez. Sunucularımızla paylaşılan verileri en aza indirmek için çaba gösteririz.
Birçok uygulama, LocationManager yerine Play API'den FLP kullanır. Bunun nedeni, FLP'nin isteğinizin kriterlerini veya politikalarını (ör. güç ve doğruluk) karşılamak için en iyi konum sağlayıcıyı otomatik olarak seçmesidir.
Mobil cihazların aksine araçlar nadiren bir yerden diğerine atlıyor gibi görünür. Aracın konumu çoğu zaman arka planda bilinir.
Ağ konumu sağlayıcısı (NLP)
Çoğu araç, Hücre Kimliği (ve sinyal gücü) hakkında gerekli bilgileri almak için gerekli telefon API'lerini kullanmaz. Sonuç olarak ve veri kullanımını en aza indirdiğimiz için NLP'nin ek işlevsel uygulaması sağlanmaz.
Fused Location Provider
Mobil FLP, ağ ve GPS sağlayıcıları kullanmanın yanı sıra konum kalitesini artırmak için diğer sensörlerden gelen bilgileri birleştirir. Buna karşılık, Automotive FLP temel kaynak olarak GPS_PROVIDER kullanır. GNSS konumlarını ayarlayarak, istemci kaba konumlar istediğinde doğruluğu düşürmek için kasıtlı hata ekler.
Bu nedenle, çok nadir durumlarda ilk pozisyonun kullanılabilir olması normalden daha uzun sürebilir. Örneğin, bir araç veya daha doğrusu konum alt sistemi ilk kez kullanıldığında ya da araç çekildikten sonra.
Mobil ve otomotiv kullanımlarını hedefleyen uygulamalar tasarlama
Daha yüksek bir kesinlik kalitesi gerektirmeyen mobil ve otomotiv cihazlarını hedefleyen uygulamalar için android.permission.ACCESS_COARSE_LOCATION yalnızca isteyin ve kullanılabilir olduğunda FLP'yi kullanmaya geri dönün. Alternatif olarak, aynı izinlerle doğrudan GPS_PROVIDER kullanın. Çerçeve, API beklentileriyle uyumlu olması için temel GNSS konumunun hassasiyetini düşürür. Daha fazla bilgi için Konum izinleri isteme bölümündeki Doğruluk başlıklı makaleyi inceleyin.
Ayrıca bu uygulamalar, manifest dosyalarında android.hardware.location.network özelliğini isteğe bağlı olarak açıkça belirtmelidir. Örneğin:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
Bu yaklaşım, farklı form faktörlerindeki cihazlarla daha fazla uyumluluk elde etmenize yardımcı olur. Bu nedenle, gerektiğinde konum almak için kod farklılıkları olmadan maksimum uygulama kullanılabilirliği sağlar.