Wear OS'te konumu algılama

Kol saatlerinin küçük ve kolayca bakılabilen form faktörü, Wear OS'i kullanıcı konumunu kaydeden, bildiren ve kullanıcı konumuna yanıt veren uygulamalar için ideal bir platform haline getirir. Örneğin, kullanıcılara mesafe, hız ve yön hakkında anlık güncellemeler veren veya çevreleri hakkında bir bakışta görülebilecek ipuçları sağlayan uygulamalar oluşturabilirsiniz.

Daha fazla bilgi için Konum kullanım özelliği olan uygulamalar oluşturma başlıklı makaleyi inceleyin.

Bazı kol saatlerinde, bağlı bir telefon gerektirmeden konum verilerini alan yerleşik bir GPS sensörü bulunur. Bir kol saati uygulamasında konum verileri istediğinizde sistem, en az güç tüketen yöntemi kullanarak konumu telefondan veya kol saatinden alır. Bu nedenle, kol saatinde GPS sensörü olmasa bile konum bilgisi alabilirsiniz.

Konum verisi edinmenin pil ömrü üzerindeki etkisini azaltmak için PRIORITY_BALANCED_POWER_ACCURACY değeriyle setPriority() işlevini çağırın. Farklı öncelik ayarları, çipleri farklı şekilde optimize edebilir.

Mümkün olduğunda setInterval() kullanarak konumun dakikada birden fazla istenmemesini sağlayarak pilden tasarruf edin.

Sonraki bölümlerde açıklandığı gibi, uygulamanız sensörsüz bir kol saati telefondan bağlantısı kesildiğinde konum verilerinin kaybını yönetmelidir.

Yönteminizi seçin

Wear OS uygulamasına konum verileri sağlamanın iki yolu vardır. Birleştirilmiş Konum Sağlayıcı (FLP) veya Wear Sağlık Hizmetleri'ni (WHS) kullanabilirsiniz. FLP, Google Play Hizmetleri API'sidir.

FLP'yi aşağıdaki durumlarda kullanın:

  • Park edilmiş bir arabanın konumunu işaretlemek gibi, konum verilerini anlık olarak almak istiyorsunuz ancak sürekli olarak almak istemiyorsunuz.
  • Konumun sürekli olarak kullanılmasını istiyor ancak konum geçmişine ihtiyacınız yoksa.

Aşağıdaki durumlarda WHS'yi kullanın:

  • Diğer sensörlerden veri almak istiyorsunuz veya gelecekte diğer sensörlerden veri almak isteyebilirsiniz.
  • Uygulamanız, belirli bir zaman aralığında konum verilerini izlemesi gereken bir antrenman veya egzersiz uygulamasıdır.

Çok Kaynaklı Konum Sağlayıcı'yı kullanma

Kol saatinde FusedLocationProviderClient simgesini kullanarak konum verilerini alma FLP, telefondaki konum verilerini kullanabilir. Daha fazla bilgi için Konum hizmetleri istemcisi oluşturma başlıklı makaleyi inceleyin.

Konum güncellemeleri isteme ve kullanıcının konumunu sürekli olarak izleme hakkında bilgi edinmek için Konum güncellemeleri isteme başlıklı makaleyi inceleyin.

Yerleşik GPS'i algılama

Dahili GPS sensörü olmayan bir kol saatiyle koşuya çıkan ve eşlenmiş telefonu yanında götürmeyen bir kullanıcı olursa kol saati uygulamanız, bağlı cihaz üzerinden konum verilerini alamaz. Uygulamanızda bu durumu tespit edin ve kullanıcıyı konum özelliklerinin kullanılamadığı konusunda uyarın.

Bir kol saatinde yerleşik GPS sensörü olup olmadığını belirlemek için PackageManager.FEATURE_LOCATION_GPS ile hasSystemFeature() yöntemini çağırın. Aşağıdaki kod, bir etkinliğe başladığınızda kol saatinin yerleşik bir GPS sensörüne sahip olup olmadığını algılar:

class LocationActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // ...
    }
    fun hasGps(): Boolean =
        packageManager.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS)
}

Bağlantı kesme etkinliklerini işleme

Yerleşik GPS sensörü olmayan bir saat, telefona olan bağlantısını kaybederse konum verileri akışını kaybeder. Uygulamanız sürekli bir veri akışı bekliyorsa bağlantı kaybını algılamalı, kullanıcıyı uyarmalı ve işlevselliği kontrollü bir şekilde azaltmalıdır.

Mobil cihazlarda olduğu gibi, FusedLocationProviderClient.requestLocationUpdates() kullanarak konum güncellemeleri istediğinizde LocationCallback veya PendingIntent iletirsiniz. Her ikisi de konum bilgilerini ve LocationAvailability durumunu içerir.

LocationCallback seçeneğini kullanırken konum kullanılabilirlik durumuyla ilgili güncellemeler almak için onLocationAvailability() seçeneğini geçersiz kılın.

PendingIntent seçeneğini kullandığınızda ve Intent döndürüldüğünde, LocationAvailability.extractLocationAvailability(Intent) yöntemini kullanarak Intent'den konum müsaitlik durumunu çıkarın.

Handle konumu bulunamadı

GPS sinyali kaybolduğunda kullanıcının kol saatinin bilinen son konumunu alabilirsiniz. GPS düzeltmesi alamadığınızda ve kol saatinde yerleşik GPS olmadığında ve telefonla bağlantısı kesildiğinde bilinen son konumu almak faydalıdır. Daha fazla bilgi için Bilinen son konumu alma başlıklı makaleyi inceleyin.

Konumu toplu aramalarla temizleme

Toplu aramaları kullanıyorsanız ekran tekrar açıldığında veya ortam modundan döndüğünde flushLocations() numaralı telefonu arayarak toplu konumları kayıtlı tüm LocationListeners, LocationCallbacks ve Pending Intents cihazlarına hemen döndürün.