Bilinen son konumu alma

Uygulamanız, Google Play Hizmetleri konum API'lerini kullanarak kullanıcının cihazının bilinen konumu. Çoğu durumda kullanıcının mevcut konumu (genellikle bilinen son konuma eşdeğerdir) cihazın konumu.

Özel olarak, çok kaynaklı Konum Sağlayıcı'ya gidin. Çok kaynaklı Konum Sağlayıcı, Google Play Hizmetleri'ndeki konum API'lerinden biridir. Google temel konum teknolojisini yönetir ve basit bir API sağlar. Böylece, gereksinimleri yüksek doğruluk veya düşük güç gibi üst düzeyde belirtebilirsiniz. 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 önem taşır ve açıklama metni eklemeniz gerekmez.

Bu derste, bir cihazın konumu için nasıl tek bir istekte bulunacağınız cihazın getLastLocation() yöntemini kullanabilirsiniz.

Google Play Hizmetleri'ni kurun

Çok kaynaklı konum sağlayıcısına erişmek için uygulamanızın geliştirme projesinin Google Play hizmetlerini içerir. Google Play hizmetlerini indirme ve yükleme SDK aracılığıyla yapılandırma Yöneticisi'ni tıklayın ve kitaplığı projenize ekleyin. Ayrıntılı bilgi için Google Play'i Kurma Hizmetler.

Uygulama izinlerini belirleme

Özellikleri, konum hizmetlerini kullanan uygulamaların konum izni isteyebilir, bu özelliklerin kullanım alanlarına göre değişir.

Konum hizmetleri istemcisi oluştur

Etkinliğinizin onCreate() yönteminde, aşağıdaki kod snippet'inde gösterildiği gibi Fused Location Provider Client'ın 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 öğrenebilirsiniz. Uygulamanız Bunlara bağlı olarak, çok erişimli konum sağlayıcısının getLastLocation() cihaz konum alma yöntemini alabilirsiniz. Döndürülen konumun kesinliği bu çağrı, uygulamanıza yerleştirdiğiniz izin ayarına göre belirlenir aşağıdaki adımları izleyin: konum izni isteme.

Bilinen son konumu istemek için şu numarayı arayın: getLastLocation() yöntemidir. Aşağıdaki kod snippet'i, isteği ve yanıt:

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
                }
            }
        });

İlgili içeriği oluşturmak için kullanılan getLastLocation() yöntemi, Task değerini döndürür almak için kullanabileceğiniz Location bir enlem ve boylam koordinatlarına sahip nesne coğrafi konum. Konum nesnesi, null şu durumlardan biri söz konusudur:

  • Konum, cihaz ayarlarında kapalı. Sonuç, null durumunda geçerlidir. Bu durum, konumun devre dışı bırakılması önbelleği de temizler.
  • Cihaz, konumunu hiçbir zaman kaydetmedi. Yeni bir veya fabrika ayarlarına geri yüklenmiş bir cihaz olabilir.
  • Cihazdaki Google Play hizmetleri yeniden başlatıldı ve etkin değil yeniden başlatıldı. Bu durumu önlemek için yeni bir müşteri oluşturup konum güncellemelerini kendiniz isteyebilirsiniz. Daha fazla bilgi için Alma Konumu bölümüne bakın. Güncellemeler.

En iyi konum tahminini seçin

FusedLocationProviderClient, cihazı almak için çeşitli yöntemler sunar. konum bilgisi. Uygulamanızın özelliklerine bağlı olarak aşağıdakilerden birini seçin: Kullanım alanı:

  • getLastLocation() daha hızlı bir konum tahmini alır ve gerçekleşebilecek pil kullanımını en aza indirir. uygulamanızla ilişkilendirilir. Ancak başka bir müşteri aktif olarak konumu yakın zamanda kullandı.
  • getCurrentLocation() konum tutarlı bir şekilde daha güncel ve doğru olur. Ancak bu yöntem cihazda etkin konum hesaplamasının yapılmasına neden olabilir

    Bu, mümkün olduğunda yeni bir konum elde etmek için önerilen yoldur ve Konum güncellemelerini başlatıp yönetmek gibi alternatiflerden daha güvenlidir kendiniz requestLocationUpdates() kullanın. Uygulamanız requestLocationUpdates(), uygulamanız bazen yüksek miktarda veri tüketebilir konum kullanılamıyorsa veya istek doğru şekilde durdurulmamışsa güç yeni bir konum elde edebilirsiniz.

Ek kaynaklar

Android'de mevcut konumu getirme hakkında daha fazla bilgi için şu malzemeleri kullanabilirsiniz:

Örnekler

  • Getirme sırasında en iyi uygulamaları gösteren örnek uygulama geçerli konum.