Yaklaşık konum bilgisi alma

Uygulama geliştiricilerin, kullanıcı gizliliğine saygı duymak için yalnızca kaba konum izinleri istemeleri önerilir. Yaklaşık bir genel konum bilgisine ihtiyaç duyan uygulamalar genellikle hızlı olduğu ve daha az güç tükettiği için 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 veya LM, tercih edilen konum sağlayıcıyı açıkça tanımlamanızı gerektirir.

  • Google Play Hizmetleri API'si, Çok Kaynaklı Konum Sağlayıcı'nın (FLP) kullanıma sunulmasıyla konumla çalışmak için daha basitleştirilmiş bir yol sunar.

Birçok otomotiv uygulaması, LM yerine Google Play Hizmetleri (GPS) API'sinden FLP'yi kullanır. FLP, konum isteği ölçütlerine ve aracın ihtiyaç duyduğu politikalara (güç ve doğruluk) göre en uygun konum sağlayıcıyı seçer.

Bunun yerine, LM'de NETWORK_PROVIDER'yi ve ince konumlar için GPS_PROVIDER'ı açıkça isteyip kullanmayı seçebilirsiniz. Bu işlem 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 artık LM'ye konum sağlayıcı olarak sunuluyor. 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, beklentilerle uyumlu olması için doğruluğu yapay olarak düşürür. Bu nedenle, 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 özellik pek mantıklı 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ı veya Bluetooth (BT) işaretçilerini de kullanmaya geçmiştir. NETWORK_PROVIDER kullanımı için veri bağlantısı gerekebilir.

Otomotiv uygulamalarında cihaz kısıtlamaları farklıdır. GNSS normalde açık olduğundan, güç ve pil kullanımının artması nedeniyle herhangi bir ceza uygulanmaz. Bu nedenle, IVI çalışma süresi etkilenmez. Sunucularımızla değiştirilen verileri en aza indirmeye çalışırız.

Bu nedenle birçok uygulama, doğrudan LM yerine Play API'den FLP'yi kullanır. Çünkü FLP, konum isteği ölçütlerini/politikalarını (yani güç ve doğruluk) karşılayabilen en iyi konum sağlayıcıyı kullanarak otomatik olarak akıllıca davranır.

Mobil cihazların aksine araçlar nadiren bir yerden diğerine atlıyor gibi görünür. Aracın konumu çoğu zaman kaputun altında bilinir.

Ağ konumu 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 kullanmaz. Bu nedenle 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ı uygun şekilde kullanmanın yanı sıra konumların kalitesini daha da artırmak için diğer sensörlerden gelen bilgileri birleştirir. Diğer yandan, Automotive'in FLP'sinin mevcut uygulaması, yukarıda bahsedilen varsayımlardan yararlanır ve her zaman temel kaynak olarak GPS_PROVIDER kullanır. GNSS'den gelen konumları karıştırır ve gerektiğinde daha da yanlış olması için bazı hatalar ekler. Örneğin, bir istemciye kaba konumlar sağlandığında.

Bu nedenle, çok nadir durumlarda ilk konumun 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

Mobil ve otomotiv cihazlarını hedefleyen ve daha yüksek kalitede kesinlik isteği android.permission.ACCESS_COARSE_LOCATION gerektirmeyen uygulamaların yalnızca bu isteği kullanmasını ve kullanılabilir olduğunda FLP'ye geri dönmesini öneririz. Alternatif olarak, son çare olarak GPS_PROVIDER öğesini aynı izinlerle doğrudan 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, 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ı sektörlerdeki cihazlarla maksimum uyumluluk sağlar ve bu nedenle, gerektiğinde konum elde etmek için kod farklılıkları olmadan maksimum uygulama kullanılabilirliği sunar.