Kullanıcı gizliliğine saygı göstermek amacıyla, uygulama geliştiricilerinin yalnızca kaba konum izinleri istemeleri önerilir. Yaklaşık kaba konuma ihtiyaç duyan uygulamalar, hızlı olduğundan ve daha az güç tükettiğinden genellikle ağ konumunu (FLP) kullanır.
Android tabanlı mobil cihazlarla karşılaştırıldığında otomotiv uygulamalarındaki ağ konumu daha zorlayıcı olabilir. İki Android API'sini kullanabilirsiniz:
LocationManager API, tercih edilen konum sağlayıcısını açıkça tanımlamanızı gerektirir.
Google Play Hizmetleri API'si, Birleştirilmiş Konum Sağlayıcı'nın (FLP) kullanıma sunulmasıyla konumla çalışmanız için daha basitleştirilmiş bir yol sunar.
Birçok otomotiv uygulaması, LM yerine Google Play Hizmetleri (GPS) API'sinden FLP kullanır. FLP, aracın ihtiyaç duyduğu konum isteği kriterlerine ve politikalarına (güç ve doğruluk) göre en uygun konum sağlayıcıyı seçer.
Bunun yerine, LM'de NETWORK_PROVIDER
yanı sıra hassas konumlar için android.permission.ACCESS_FINE_LOCATION
izinlerini kullanan GPS_PROVIDER
açıkça talep etmeyi ve kullanmayı seçebilirsiniz. API 31'de, önceden yalnızca GPS API aracılığıyla erişilebilen FUSED_PROVIDER
artık LM için konum sağlayıcı olarak kullanılabilir. FLP'nin daha basit bir uygulamasını FusedLocationProvider.java
görüntüleyebilirsiniz.
GPS_PROVIDER
yalnızca kaba izin haklarıyla kullanmak mümkün olsa da, çerçeve beklentilere uyum sağlamak için doğruluğu yapay olarak düşürür; genel kullanılabilirlik zayıf olduğundan ve genellikle kaba bir konum elde etmek daha yavaş olduğundan Android telefonları hedefleyen geliştiriciler için pek mantıklı değildir.
Otomotivde ağ konumu
Android telefonlarda (Google Mobil Hizmetleri ile birlikte) kullanılan NETWORK_PROVIDER
konumu yalnızca yakındaki baz istasyonlarına göre belirlemekten, Wi-Fi erişim noktalarını ve hatta Bluetooth (BT) işaretlerini de kullanmaya başladı. NETWORK_PROVIDER
kullanımı veri bağlantısı gerektirebilir.
Otomotiv uygulamaları için cihaz kısıtlamaları farklılık gösterir. GNSS normalde açık olduğundan artan güç ve pil kullanımından dolayı herhangi bir ceza alınmaz. Sonuç olarak IVI çalışma süresinden ödün verilmez. Sunucularımızla veri alışverişini en aza indirmeye çalışıyoruz.
Bu nedenle pek çok uygulama doğrudan LM yerine Play API'sinden FLP kullanır; çünkü FLP, konum isteği kriterlerini/politikalarını (yani güç ve doğruluk) en iyi şekilde karşılayabilen konum sağlayıcıyı kullanarak akıllıca olanı otomatik olarak yapar.
Mobil cihazların aksine, araçlar nadiren bir yerden diğerine atlıyor gibi görünüyor. Aracın konumu çoğu zaman kaputun altından bilinir.
Ağ konum sağlayıcısı
Ç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 hiçbir ek işlevsel uygulaması sağlanmamaktadır.
Birleştirilmiş konum sağlayıcı
Mobil FLP, uygun şekilde ağ ve GPS sağlayıcılarını 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'in FLP'sinin mevcut uygulaması yukarıda belirtilen varsayımlardan yararlanıyor ve GPS_PROVIDER
her zaman temel kaynak olarak kullanıyor. Gerektiğinde daha hatalı olacak bazı hatalar ekleyerek GNSS'deki konumları değiştirir. Örneğin, bir müşteriye kaba konumlar sağlandığında.
Bu nedenle, çok az sayıda durumda, ilk pozisyonun müsait olması için normalden daha uzun bir süre olabilir. Örneğin bir aracın, daha doğrusu konum alt sisteminin ilk kullanımında veya çekildikten sonra.
Mobil ve otomotiv kullanımlarını hedefleyecek uygulamalar tasarlayın
Daha yüksek kalitede hassasiyet gerektirmeyen mobil ve otomotiv cihazlarını hedefleyen uygulamaların yalnızca android.permission.ACCESS_COARSE_LOCATION
isteğinde bulunmasını ve mümkün olduğunda FLP kullanmaya geri dönmesini öneririz. Alternatif olarak, son çare olarak GPS_PROVIDER
aynı izinlerle doğrudan kullanın. Çerçeve, API beklentileriyle uyum sağlamak için temeldeki GNSS konumunun hassasiyetini azaltır. Daha fazla bilgi edinmek için bkz. Doğruluk .
Ayrıca, bu uygulamaların bildirimlerinde android.hardware.location.network
özelliğinin isteğe bağlı olduğunu açıkça beyan etmesi gerekir. Örneğin:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
Bu yaklaşım, farklı sektörlerdeki cihazlarla maksimum uyumluluğu ve dolayısıyla gerektiğinde konum almak için kod farklılıkları olmadan maksimum uygulama kullanılabilirliğini sağlar.