Yaklaşık konum al

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.