Bilinen son konumu alma

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 geçerli 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 ya da düşük güç gibi yüksek düzeylerde gereksinimleri belirleyebilmeniz için basit bir API sunar. Ayrıca cihazın pil gücü kullanımını da optimize eder.

Not: Uygulamanız arka planda çalışırken konuma erişim, uygulamanın temel işlevi açısından kritik öneme sahip olmalıdır ve kullanıcılara uygun şekilde açıklama sağlanmalı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şmek için uygulamanızın geliştirme projesi, Google Play Hizmetleri'ni içermelidir. Google Play Hizmetleri bileşenini SDK Yöneticisi üzerinden 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, söz konusu ö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 bunlara bağlandığında 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 hassasiyeti, 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'i, isteği ve yanıtın basit bir şekilde nasıl işlendiğini 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, coğrafi bir 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ış. Konumun devre dışı bırakılması önbelleğin de temizlenmesine neden olacağından, son konum daha önce alınmış olsa bile sonuç null olabilir.
  • Cihaz hiçbir zaman konumunu 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 bilgisi isteyen etkin bir Çok Kaynaklı Konum Sağlayıcı istemcisi yok. Böyle bir durumla karşılaşmamak için yeni bir istemci oluşturup konum güncellemeleri talep edebilirsiniz. Daha fazla bilgi için Konum Güncellemelerini Alma konusuna 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şkilendirilebilecek pil kullanımını en aza indirir. Ancak, yakın zamanda konumu aktif olarak kullanan başka müşteri yoksa konum bilgisi güncel olmayabilir.
  • getCurrentLocation() daha tutarlı bir şekilde daha yeni ve doğru bir konum elde eder. Ancak bu yöntem, cihazınızda etkin konum hesaplamasının yapılmasına neden olabilir

    Bu, mümkün olduğunda yeni bir konum almak için önerilen yöntemdir ve konum güncellemelerini kendiniz requestLocationUpdates() kullanarak başlatmak ve yönetmek gibi alternatiflerden daha güvenlidir. Uygulamanız requestLocationUpdates() yöntemini çağırıyorsa konum bilgisi olmadığında veya yeni konum alındıktan sonra istek doğru şekilde durdurulmazsa uygulamanız bazen yüksek miktarda güç tüketebilir.

Ek kaynaklar

Android'de geçerli konum bilgisini alma hakkında daha fazla bilgi için aşağıdaki malzemeleri görüntüleyin:

Numuneler

  • Geçerli konumu getirirken en iyi uygulamaları gösteren örnek uygulama.