Uygulamanız, Google Play Hizmetleri konum API'lerini kullanarak kullanıcının cihazının bilinen son konumunu isteyebilir. Çoğu durumda kullanıcının mevcut konumuyla ilgilenirsiniz. Bu konum, genellikle cihazın bilinen son konumuna eşdeğerdir.
Özellikle, cihazın bilinen son konumunu almak için çok kaynaklı konum sağlayıcıyı kullanın. Çok kaynaklı konum sağlayıcı, Google Play Hizmetleri'ndeki konum API'lerinden biridir. Temel konum teknolojisini yönetir ve yüksek doğruluk veya düşük güç gibi yüksek seviyedeki gereksinimleri belirtebilmeniz için basit bir API sağlar. Ayrıca cihazın pil gücü kullanımını optimize eder.
Not: Uygulamanız arka planda çalışırken konuma erişim, uygulamanın temel işlevi açısından kritik öneme sahip olmalı ve kullanıcılara uygun şekilde açıklama yapılmalıdır.
Bu derste, çok kaynaklı konum sağlayıcıda getLastLocation()
yöntemini kullanarak bir cihazın konumu için nasıl tek bir istekte bulunulacağı gösterilmektedir.
Google Play Hizmetleri'ni kur
Çok kaynaklı konum sağlayıcıya erişebilmek için uygulamanızın geliştirme projesinin Google Play Hizmetleri'ni içermesi gerekir. SDK Yöneticisi üzerinden Google Play Hizmetleri bileşenini indirip yükleyin ve kitaplığı projenize ekleyin. Ayrıntılar için Google Play Hizmetleri'ni Kurma kılavuzuna bakın.
Uygulama izinlerini belirleme
Özellikleri konum hizmetlerini kullanan uygulamalar, bu özelliklerin kullanım alanlarına bağlı olarak konum izinleri istemelidir.
Konum hizmetleri istemcisi oluştur
Etkinliğinizin onCreate()
yönteminde, aşağıdaki kod snippet'i gösterildiği gibi Çok kaynaklı Konum Sağlayıcı İstemcisi'nin bir örneğini oluşturun.
Kotlin
private lateinit var fusedLocationClient: FusedLocationProviderClient override fun onCreate(savedInstanceState: Bundle?) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) }
Java
private FusedLocationProviderClient fusedLocationClient; // .. @Override protected void onCreate(Bundle savedInstanceState) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this); }
Bilinen son konumu alma
Konum Hizmetleri istemcisini oluşturduktan sonra, bir kullanıcının cihazının bilinen son konumunu alabilirsiniz. Uygulamanız bunlarla bağlantılı olduğunda cihaz konumunu almak için çok kaynaklı konum sağlayıcısının getLastLocation()
yöntemini kullanabilirsiniz. Bu çağrının döndürdüğü konumun kesinliği,
konum izinleri isteme ile ilgili kılavuzda açıklandığı gibi, uygulama manifestinize eklediğiniz izin ayarına göre belirlenir.
Bilinen son konumu istemek için getLastLocation()
yöntemini çağırın. Aşağıdaki kod snippet'inde istek ve yanıtın basit bir şekilde işlenmesi gösterilmektedir:
Kotlin
fusedLocationClient.lastLocation .addOnSuccessListener { location : Location? -> // Got last known location. In some rare situations this can be null. }
Java
fusedLocationClient.getLastLocation() .addOnSuccessListener(this, new OnSuccessListener<Location>() { @Override public void onSuccess(Location location) { // Got last known location. In some rare situations this can be null. if (location != null) { // Logic to handle location object } } });
getLastLocation()
yöntemi, bir coğrafi konumun enlem ve boylam koordinatlarına sahip bir Location
nesnesini almak için kullanabileceğiniz bir Task
döndürür. Konum nesnesi aşağıdaki durumlarda null
olabilir:
- Konum, cihaz ayarlarında kapatılmıştır. Konumun devre dışı bırakılması önbelleği de temizlediği için son konum daha önce alınmış olsa bile sonuç
null
olabilir. - Cihaz konumunu hiç kaydetmedi. Bunun nedeni yeni bir cihaz veya fabrika ayarlarına geri yüklenmiş bir cihaz olabilir.
- Cihazdaki Google Play hizmetleri yeniden başlatılmış ve hizmetler yeniden başlatıldıktan sonra konum isteğinde bulunan etkin bir Çok Kaynaklı Konum Sağlayıcı istemcisi yok. Bu durumu önlemek için yeni bir istemci oluşturup konum güncellemeleri için kendiniz istekte bulunabilirsiniz. Daha fazla bilgi için Konum Güncellemelerini Alma bölümüne bakın.
En iyi konum tahminini seçin
FusedLocationProviderClient
, cihaz konum bilgilerini almak için çeşitli yöntemler sunar. Uygulamanızın kullanım alanına bağlı olarak aşağıdakilerden birini seçin:
getLastLocation()
, konum tahminini daha hızlı alır ve uygulamanızla ilişkilendirilebilen pil kullanımını en aza indirir. Ancak, yakın zamanda konum bilgisini etkin olarak kullanan başka hiçbir istemci yoksa konum bilgileri güncel olmayabilir.getCurrentLocation()
daha tutarlı ve daha güncel bir konum sağlar. Ancak bu yöntem, cihazınızda etkin konum hesaplamalarının yapılmasına neden olabilir.Mümkün olduğunda yeni bir konum almak için önerilen yol budur ve konum güncellemelerini
requestLocationUpdates()
kullanarak kendiniz başlatma ve yönetme gibi alternatiflerden daha güvenlidir. UygulamanızrequestLocationUpdates()
çağrısı yapıyorsa konum yoksa veya yeni konum alındıktan sonra istek doğru şekilde durdurulmazsa uygulamanız bazen çok fazla güç tüketebilir.
Ek kaynaklar
Android'de mevcut konumu getirme hakkında daha fazla bilgi için aşağıdaki malzemeleri görüntüleyin:
Sana Özel
- Mevcut konumu getirirken en iyi uygulamaları göstermek için örnek uygulama.