Wear OS'te konumu algılama

Saatin küçük, bir bakışta göz atılabilen form faktörü, Wear OS'i uygulamalar için ideal bir platform haline getiriyor kullanıcı konumunu kaydetmesi, bildirmesi ve yanıtlaması gerekir. Örnek olarak, kullanıcılara mesafe, hız ve yönlerle ilgili anlık güncellemeler sağlayan uygulamalar, veya kullanıcılara belirli bir sırada teşekkür ederiz.

Daha fazla bilgi için Konumu algılayan uygulamalar derleme başlıklı makaleyi inceleyin.

Bazı kol saatlerinde, konum verilerini telefon olmadan toplayan ve bağlı bir telefon olmasını gerektirir. Bir saat uygulamasında konum verilerini istediğinizde sistemi en çok kullanarak konumu telefondan veya saatten alır verimli bir yöntemdir. Böylece, kol saatinde GPS sensörü olmasa bile konum bilgisini almak.

Konum verisi alma işleminin pil ömrü üzerindeki etkisini azaltmak için telefon etmek setPriority() şu değerle PRIORITY_BALANCED_POWER_ACCURACY. Farklı öncelik ayarları çipleri farklı şekilde optimize edebilirsiniz.

Mümkün olduğunda, artık konum sormamaya çalışarak pili koruyun dakikada bir defadan fazla setInterval().

Aşağıdaki bölümlerde açıklandığı gibi, uygulamanızın kayıpları gidermek için Konum verileri, sensörsüz bir kol saatinin telefonla bağlantısı kesildiğinde.

Yönteminizi seçin

Wear OS uygulamalarına konum verilerini sağlamanın birkaç yolu vardır. Şunları yapabilirsiniz: Fused Location Provider (FLP) veya Wear Sağlık Hizmetleri (WHS). FLP Google Play Hizmetleri API'si.

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

  • Konum verilerini anında görmek istersiniz; örneğin, park edilmiş bir arabanın konumu.
  • Konumun sürekli olarak girilmesini istersiniz ancak konum geçmişine ihtiyacınız yoktur.

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

  • Diğer sensörlerden veri almak istiyorsanız veya diğer sensörlerden veri istemeniz daha iyi anlamanızı sağlayabilir.
  • Uygulamanız, konum verilerini takip etmesi gereken bir antrenman veya egzersiz uygulaması ne olduğuna karar vermelisiniz.
ziyaret edin.

iPhone'larla eşlenen kol saatleri için bkz. iPhone'larla eşlenen kol saatleri için konum verileri.

Çok Kaynaklı Konum Sağlayıcısı'nı kullanma

Saatte konum verilerini almak için FusedLocationProviderClient. FLP, telefondaki konum verilerini kullanabilir. Daha fazla bilgi için bkz. Konum hizmetleri istemcisi oluşturma

Konum güncellemesi isteğinde bulunma ve bir konumu sürekli olarak izleme hakkında bilgi için Kullanıcının konumuna ilişkin Konum güncellemesi isteme başlıklı makaleye göz atın.

Yerleşik GPS'i algıla

Bir kullanıcı, yerleşik GPS sensörü olmayan bir kol saatiyle koşuya çıkıp çıkıyorsa eşlenen telefonu arkanıza alırsak saat uygulamanız CANNOT TRANSLATE bağlı cihaz. Uygulamanızda bu durumu algılayıp kullanıcıyı şu konuda uyarın: konum özellikleri kullanılamıyor.

Saatte yerleşik GPS sensörü olup olmadığını öğrenmek için hasSystemFeature() yöntemindeki PackageManager.FEATURE_LOCATION_GPS. Aşağıdaki kod, bir aktivite başlattığınızda saatin yerleşik GPS sensörü olup olmadığını algılar:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)

    if (!hasGps()) {
        Log.d(TAG, "This hardware doesn't have GPS.")
        // Fall back to functionality that doesn't use location or
        // warn the user that location function isn't available.
    }
}

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

Java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);

    if (!hasGps()) {
        Log.d(TAG, "This hardware doesn't have GPS.");
        // Fall back to functionality that doesn't use location or
        // warn the user that location function isn't available.
    }
    ...
}

private boolean hasGps() {
    return getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS);
}

Bağlantı kesme etkinliklerini yönetme

Saatin yerleşik GPS sensörü yoksa ve telefonla bağlantısı kesilirse saat konum veri akışını kaybeder. Uygulamanız sürekli bir veri akışı bekliyorsa uygulamanız bağlantı kesildiğini algılamalı, kullanıcıyı uyarmalı ve işlevinde bir azalma var.

Mobil cihazlarda olduğu gibi, FusedLocationProviderClient.requestLocationUpdates(), sınava girmek için LocationCallback veya bir PendingIntent. Bu özelliklerin ikisi de konum bilgilerini ve LocationAvailability durumu.

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

PendingIntent seçeneği ve Intent döndürüldü, konumu çıkarın stok durumunu Intent LocationAvailability.extractLocationAvailability(Intent) yöntemidir.

Herkese açık kullanıcı adı konumu bulunamadı

GPS sinyali kaybolduğunda, GPS sinyalinin diğer bilinen kullanıcının kol saati. Bilinen son konumu almak, GPS sabitlemesi ve saatin yerleşik GPS'i olmadığından ve telefon. Daha fazla bilgi için bkz. Bilinen son konumu alma.

Toplu çağrılarla konumu boşalt

Toplu çağrılar kullanıyorsanız flushLocations() Ekran tekrar açıldığında veya ambiyans modundan şuna döndüğünde: toplu konumları kayıtlı tüm LocationListeners konumlarına hemen döndürür, LocationCallbacks ve Pending Intents.

ziyaret edin.