Uygulama geliştiricilerin, kullanıcı gizliliğine saygı göstermek için yalnızca kaba konum izinleri istemeleri önerilir. Yaklaşık kaba konum bilgisine ihtiyaç duyan uygulamalar, hızlı ve daha az güç tükettiği için genellikle ağ konumunu (FLP) kullanır.
Android tabanlı mobil cihazlara kıyasla, otomotiv uygulamalarındaki ağ konumu daha zor olabilir. İki Android API'yi kullanabilirsiniz:
LocationManager API, tercih edilen konum sağlayıcıyı açıkça tanımlamanızı gerektirir.
Google Play Hizmetleri API, Çok Kaynaklı Konum Sağlayıcı'nın (FLP) kullanıma sunulmasıyla birlikte konumla çalışmanızı daha basit bir hale getirir.
Birçok otomotiv uygulaması, LM yerine Google Play Hizmetleri (GPS) API'sindeki FLP'yi kullanır. FLP, aracın ihtiyaç duyduğu konum isteği ölçütlerine ve politikalarına (güç ve doğruluk) göre en uygun konum sağlayıcıyı seçer.
Bunun yerine, LM'de NETWORK_PROVIDER
'u ve hassas konumlar için GPS_PROVIDER
'i açıkça isteyip kullanabilirsiniz. Bu işlemler için android.permission.ACCESS_FINE_LOCATION
izinleri kullanılır. API 31'de, daha önce yalnızca GPS API aracılığıyla erişilebilen FUSED_PROVIDER
, LM için konum sağlayıcı olarak kullanılabilir. FLP'nin daha basit bir uygulamasını FusedLocationProvider.java
bölümünde görebilirsiniz.
GPS_PROVIDER
'ü 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ğu ve kaba konum elde etmek genellikle daha yavaş olduğu için Android telefonları hedefleyen geliştiriciler için bu pek anlamlı değildir.
Otomotivde ağ konumu
Android telefonlarda (Google Mobil Hizmetleri ile) kullanılan NETWORK_PROVIDER
, konumu yalnızca yakındaki baz istasyonlarına göre belirlemekten kablosuz erişim noktalarını ve hatta Bluetooth (BT) işaretçilerini de kullanmaya başladı. NETWORK_PROVIDER
'ü kullanmak için veri bağlantısı gerekebilir.
Otomotiv uygulamaları için cihaz kısıtlamaları farklıdır. GNSS normalde açık olduğundan, artan güç ve pil kullanımı nedeniyle ceza uygulanmaz. Sonuç olarak, IVI çalışma süresi etkilenmez. Sunucularımızla paylaşılan verileri en aza indirmeye çalışıyoruz.
Bu nedenle, birçok uygulama doğrudan LM yerine Play API'den FLP kullanır. Bunun nedeni, FLP'nin arka planda konum isteği ölçütlerini/politikalarını (yani güç ve doğruluk) en iyi şekilde karşılayabilecek konum sağlayıcıyı kullanarak akıllıca hareket etmesidir.
Mobil cihazların aksine, araçlar nadiren bir yerden başka bir yere atlar. Araç konumu çoğu zaman kaputun altından bilinir.
Ağ konumu sağlayıcı
Çoğu araç, hücre kimliği (ve sinyal gücü) hakkında gerekli bilgileri almak için gerekli telefon API'lerini uygulamaz. Bunun sonucunda ve veri kullanımını en aza indirdiğimiz için NLP'nin ek işlevsel uygulaması sağlanmaz.
Çok kaynaklı konum sağlayıcı
Mobil FLP, ağ ve GPS sağlayıcılarını gerektiği gibi 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ır ve her zaman temel kaynak olarak GPS_PROVIDER
'ü kullanır. GNSS'den gelen konumları bozar ve gerektiğinde daha yanlış olması için bazı hatalar ekler. Örneğin, bir müşteriye kaba konumlar sağlandığında.
Bu nedenle, çok az sayıda durumda ilk konumun kullanılabilir hale gelmesi normalden daha uzun sürebilir. Örneğin, bir araç veya daha doğrusu konum alt sistemi ilk kez kullanıldığında ya da çekildikten sonra.
Mobil ve otomotiv kullanımlarını hedefleyen uygulamalar tasarlama
Daha yüksek kaliteli kesinlik isteği gerektirmeyen mobil ve otomotiv cihazlarını hedefleyen uygulamaların android.permission.ACCESS_COARSE_LOCATION
yalnızca FLP'yi kullanmasını ve mümkün olduğunda FLP'ye geri dönmesini öneririz. Alternatif olarak, son çare olarak doğrudan aynı izinlerle GPS_PROVIDER
kullanın. Çerçeve, API beklentileriyle uyumlu olması için temel GNSS konumunun hassasiyetini düşürür. Daha fazla bilgi için Doğruluk başlıklı makaleyi inceleyin.
Ayrıca bu uygulamalar, android.hardware.location.network
özelliğini manifest dosyalarında açıkça isteğe bağlı olarak belirtmelidir.
Örnek:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
Bu yaklaşım, sektörler genelindeki cihazlarla maksimum uyumluluk sağlar ve bu nedenle, gerektiğinde konum almak için kod farklılıkları olmadan maksimum uygulama kullanılabilirliği sunar.