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 gereksinimleri üst düzeyde belirtebilmeniz için bir API sağlar. Ayrıca cihazın pil gücü kullanımını da optimize eder.
Bu derste, çok kaynaklı konum sağlayıcıda getLastLocation() yöntemini kullanarak bir cihazın konumu için nasıl tek bir istekte bulunacağınız gösterilmektedir.
Google Play Hizmetleri'ni ayarlama
Çok kaynaklı konum sağlayıcıya erişmek için uygulamanızın geliştirme projesinde Google Play Hizmetleri bulunmalıdır. SDK Manager aracılığıyla Google Play Hizmetleri bileşenini indirip yükleyin ve kitaplığı projenize ekleyin. Ayrıntılı bilgi için Google Play Hizmetleri'ni ayarlama kılavuzuna bakın.
Uygulama izinlerini belirtme
Özellikleri konum hizmetlerini kullanan uygulamalar, bu özelliklerin kullanım alanlarına bağlı olarak konum izinleri istemelidir.
Konum hizmetleri istemcisi oluşturma
Etkinliğinizin onCreate() yönteminde, aşağıdaki kod snippet'inde gösterildiği gibi çok kaynaklı konum sağlayıcı istemcisinin bir örneğini oluşturun.
private lateinit var fusedLocationClient: FusedLocationProviderClient override fun onCreate(savedInstanceState: Bundle?) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) }
Bilinen son konumu alma
Konum Hizmetleri istemcisini oluşturduktan sonra, kullanıcının cihazının bilinen son konumunu alabilirsiniz. Cihazın konumunu almak için çok kaynaklı konum sağlayıcının getLastLocation() yöntemini kullanın. Bu çağrı tarafından döndürülen konumun kesinliği, konum izinleri isteme ile ilgili kılavuzda açıklandığı şekilde uygulama manifest dosyanıza eklediğiniz izin ayarı tarafından belirlenir.
Bilinen son konumu istemek için getLastLocation() yöntemini çağırın.
Aşağıdaki kod snippet'inde, istek ve yanıtın temel işleyişi gösterilmektedir:
fusedLocationClient.lastLocation .addOnSuccessListener { location: Location? -> // Got last known location. In some rare situations this can be null. }
getLastLocation() yöntemi, bir coğrafi konumun enlem ve boylam koordinatlarını içeren 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. Son konum daha önce alınmış olsa bile sonuç
nullolabilir. Bunun nedeni, konumun devre dışı bırakılmasının önbelleği de temizlemesidir. - Cihazın konumu hiç kaydedilmemiştir. Bu durum, yeni bir cihazda veya fabrika ayarlarına geri yüklenen bir cihazda görülebilir.
- Cihazdaki Google Play Hizmetleri yeniden başlatıldı ve hizmetler yeniden başlatıldıktan sonra konum isteyen etkin bir çok kaynaklı konum sağlayıcı istemcisi yok. Bu durumdan kaçınmak için yeni bir istemci oluşturabilir ve konum güncellemelerini kendiniz isteyebilirsiniz. Daha fazla bilgi için Konum güncellemeleri isteme başlıklı makaleyi inceleyin.
En iyi konum tahminini seçme
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ızın pil kullanımını en aza indirir. Ancak yakın zamanda başka bir istemci konumu etkin bir şekilde kullanmadıysa konum bilgileri güncel olmayabilir.getCurrentLocation(), daha güncel ve doğru konum bilgilerini daha tutarlı bir şekilde alır. Ancak bu yöntem, cihazda etkin konum hesaplamasının yapılmasına neden olabilir.Bu, mümkün olduğunda yeni bir konum almanın önerilen yoludur ve
requestLocationUpdates()kullanarak konum güncellemelerini kendiniz başlatıp yönetmek gibi alternatiflerden daha güvenlidir. UygulamanızrequestLocationUpdates()yöntemini çağırıyorsa konum kullanılamadığında veya yeni bir konum alındıktan sonra istek doğru şekilde durdurulmadığında bazen büyük miktarda güç tüketebilir.
Ek kaynaklar
Android'de mevcut konumu alma hakkında daha fazla bilgi için aşağıdaki materyalleri inceleyin:
Örnekler
- Mevcut konumu getirirken en iyi uygulamaları gösteren örnek uygulama.