Bağımsız Wear OS uygulamaları ve bağımsız olmayan Wear OS uygulamaları

Wear OS uygulamalarının telefondan bağımsız olarak çalışmasını öneririz. Böylece kullanıcılar Android veya iOS telefona erişimleri olmadan kol saatinde görev yapabilirler. Saat uygulamanız telefon etkileşimi gerektiriyorsa Wear OS uygulamanızı bağımsız değil olarak işaretlemeniz ve kullanıcının telefon uygulamasının kullanılabilir olmasını sağlamak için gerekli adımları uygulamanız gerekir.

Uygulamanızı planlayın

Android App Bundle'ı kullanarak aynı uygulama listesi altında her kullanıcının cihaz yapılandırmasına göre optimize edilmiş Android Package Kit'leri (APK'lar) otomatik olarak oluşturabilirsiniz. Böylece, kullanıcılar yalnızca uygulamanızı çalıştırmak için ihtiyaç duydukları kodu ve kaynakları indirebilirler.

Uygulamanızı Google Play Store üzerinden dağıtılmak üzere ayarlama hakkında bilgi için Wear OS uygulamalarını paketleme ve dağıtma makalesine ve Android App Bundle'ı kullanmaya başlama kılavuzuna bakın.

Genel olarak, bir Wear OS uygulaması için minimum API düzeyi API düzeyi 25'tir (Wear OS 2.0). Hedef API düzeyi, API düzeyi 28 veya üstü olmalıdır. Daha fazla bilgi için Google Play'in hedef API düzeyi şartını karşılama konusuna bakın. Uygulamanızın en son platform sürümünde iyi bir şekilde çalıştığından emin olmak için targetSdkVersion düzeyini API düzeyi 30'a (Wear OS 3) ayarlayın.

Ağ istekleri ve yüksek bant genişliğinde ağ erişimi hakkında bilgi edinmek için Wear OS'te ağ erişimi ve senkronizasyon başlıklı makaleyi inceleyin.

Bir uygulamayı Wear OS uygulaması olarak tanımlama

<uses-feature> etiketini, uygulamanızın Android manifest dosyasında tanımlamanız gerekir. Bunun bir saat uygulaması olduğunu belirtmek için aşağıdaki gibi bir giriş ekleyin:

  <manifest>
  ...
  <uses-feature android:name="android.hardware.type.watch" />
  ...
  </manifest>
  

Bir uygulamayı bağımsız veya bağımsız olmayan uygulama olarak tanımlama

Saat uygulaması bağımsız veya bağımsız değildir.

  • Bağımsız: Kimlik doğrulama dahil olmak üzere temel özellikler için bir telefon uygulaması gerektirmeyen, tamamen bağımsız bir uygulama. Telefon uygulaması varsa yalnızca isteğe bağlı özellikler sağlanır.
  • Bağımsız olmayan: Kimlik doğrulama dahil olmak üzere temel özellikler için bir telefonda veya başka bir cihazda uygulama kullanılmasını gerektiren bağımlı bir uygulama.

Wear OS uygulamanızda, uygulamanızın bağımsız veya bağımsız olmadığını belirtmek için Android manifest dosyasında meta-data öğesinin com.google.android.wearable.standalone değerini ayarlayın.

Saat uygulamanız tamamen bağımsız ve bağımsız bir uygulamaysa com.google.android.wearable.standalone değerini true olarak ayarlayarak bunu Google Play Store'a bildirin:

<application>
...
  <meta-data
    android:name="com.google.android.wearable.standalone"
    android:value="true" />
...
</application>

Saat uygulamanız bağımsız değilse ve temel özellikler açısından başka bir uygulamaya bağımlıysa com.google.android.wearable.standalone değerini false olarak ayarlayın. Bu mesaj, saat uygulaması için başka bir cihaz gerektiğini ancak Google Play Store'daki uygulama tanıtımınızı etkilemediğini gösterir.

Not: com.google.android.wearable.standalone değeri false olsa bile saat uygulaması, telefon uygulaması yüklenmeden önce yüklenebilir. Dolayısıyla, saat uygulamanız bu sayfada açıklandığı gibi, tamamlayıcı bir telefonda gerekli telefon uygulamasının eksik olduğunu algılarsa kullanıcıdan telefon uygulamasını yüklemesini isteyin.

Paylaşılan kod ve veri depolama

Kod, Wear OS uygulaması ve telefon uygulaması arasında paylaşılabilir. Örneğin, ağ iletişimi için ortak kod paylaşılan bir kitaplıkta olabilir.

İsteğe bağlı olarak, bir form faktörüne özel kod ayrı bir modülde olabilir.

Verileri telefonda olduğu gibi yerel olarak depolamak için standart Android depolama API'lerini kullanabilirsiniz. Örneğin, SharedPreferences API'lerini veya Oda kalıcılık kitaplığını kullanabilirsiniz.

Uygulamanızı başka bir cihazda algılama

Saat uygulamanız ve ilgili telefon uygulaması, diğer uygulamanın kullanılabilir olup olmadığını algılayabilir.

Telefon ve kol saati uygulamalarınız, CapabilityClient kullanarak eşlenen bir cihaza varlıklarının reklamını yapabilir. Bunu statik veya dinamik olarak yapabilirler.

Bir uygulama kullanıcının Wear OS ağındaki bir düğümde (ör. telefon, eşlenmiş saat veya bulutta) olduğunda, CapabilityClient diğer uygulamaların bunu algılamasına olanak tanır. Daha fazla bilgi için Reklam özellikleri bölümünü inceleyin.

Uygulamalarınızdan biri diğerini algılayamazsa kullanıcıdan etkilenen cihazda Play Store girişini açmasını isteyebilirsiniz. Bu, düzgün çalışması için tamamlayıcı telefon uygulamalarının bulunmasını gerektiren saat uygulamalarının kullanımına yönelik bir çözümdür.

Tüm telefonlar (ör. iPhone'lar) Play Store'u desteklemediğinden Play Store'un cihazda kullanılıp kullanılamadığını kontrol etmeniz gerekir.

Aşağıdaki bölümlerde iki senaryoya yönelik en iyi uygulamalar açıklanmaktadır:

  • Bağımsız saat uygulamanız için telefon uygulamanız gerekir.
  • Telefon uygulamanız, bağımsız saat uygulamanıza ihtiyaç duyar.

Bu işlevin gösterildiği GitHub'daki örnek uygulamayı da inceleyebilirsiniz. Aşağıdaki bölümde açıklanan sınıflar hakkında daha fazla bilgi için Wear OS API referansı bölümüne bakın. Bu referans, Wear OS uygulamanızın tamamlayıcı telefonun Android mi yoksa iOS cihaz mı olduğunu kontrol etmesini sağlayan getPhoneDeviceType() yöntemini içeren PhoneTypeHelper sınıfıyla ilgili bilgileri de içerir.

Uygulamalarınızı algılamak için işlev adları belirtin

Saat veya telefon gibi her cihaz türüne karşılık gelen uygulama için res/values/wear.xml dosyasında özellik adı olarak benzersiz bir dize belirtin.

Örneğin, mobil modülünüzde wear.xml dosyası şunları içerebilir:

<resources xmlns:tools="http://schemas.android.com/tools"
        tools:keep="@array/android_wear_capabilities">
    <string-array name="android_wear_capabilities">
        <item>verify_remote_example_phone_app</item>
    </string-array>
</resources>

Wear OS modülünüzde, wear.xml dosyası özellik adı için farklı bir değer içerir. Örneğin:

<resources xmlns:tools="http://schemas.android.com/tools"
        tools:keep="@array/android_wear_capabilities">
    <string-array name="android_wear_capabilities">
        <item>verify_remote_example_wear_app</item>
    </string-array>
</resources>

Daha fazla bilgi için Reklam özellikleri bölümünü inceleyin.

Uygulama algılama ve kol saatinden URL açma

Saat uygulamanız, kullanıcının tamamlayıcı telefonunda sizin telefon uygulamanızın olup olmadığını algılayabilir. Şu adımları uygulayın:

  1. Telefon uygulamanızın, eşlenen telefonda yüklü olup olmadığını kontrol etmek için CapabilityClient kullanın. Daha fazla bilgi için GitHub'daki örnek uygulamaya göz atın.
  2. Telefon uygulamanız telefonda yüklü değilse telefonun türünü kontrol etmek için PhoneDeviceType.getPhoneDeviceType() yöntemini kullanın. Ayrıntılar için aşağıdaki bölüme bakın.
  3. PhoneDeviceType.DEVICE_TYPE_ANDROID döndürülürse telefon bir Android telefondur. Wear OS cihazda RemoteActivityHelper.startRemoteActivity() numarasını arayarak telefonda Play Store'u açın. Telefon uygulamanızın pazar URI'sini kullanın. Bu URI, Wear uygulamanızın URI'sından farklı olabilir. Örneğin, şu gibi bir pazar URI'si kullanın: market://details?id=com.example.android.wearable.wear.finddevices.
  4. PhoneDeviceType.DEVICE_TYPE_IOS döndürülürse telefon, Play Store'u bulunmayan bir iOS telefondur. Wear OS cihazda RemoteActivityHelper.startRemoteActivity() çağrısı yaparak iPhone'da App Store'u açın. Uygulamanızın iTunes URL'sini (ör. https://itunes.apple.com/us/app/yourappname) belirtebilirsiniz.

    Telefon uygulamanızın bir iOS cihazda yüklü olup olmadığını Wear OS'ten programatik olarak belirleyemezsiniz. En iyi uygulama olarak kullanıcıya App Store'un açılmasını manuel olarak tetikleyecek bir mekanizma sağlayın.

Not: Telefonda herhangi bir URL'nin saatten açılacağını ve telefon uygulamasının gerekmediğini belirtmek için daha önce açıklanan RemoteActivityHelper API'yi kullanın.

Eşlenen telefonun türünü algılamaya ilişkin ayrıntılar

Kol saatinin eşlendiği telefonun türünü kontrol etmek için getPhoneDeviceType() yöntemini kullanan bir snippet'i aşağıda görebilirsiniz:

Kotlin

var phoneDeviceType: Int = PhoneDeviceType.getPhoneDeviceType(context)

Java

int phoneDeviceType = PhoneDeviceType.getPhoneDeviceType(context);

getPhoneDeviceType() yönteminin döndürdüğü değer aşağıdakilerden biridir:

Döndürülen değer Description
DEVICE_TYPE_ANDROID Tamamlayıcı telefon bir Android cihaz.
DEVICE_TYPE_IOS Tamamlayıcı telefon bir iOS cihaz.
DEVICE_TYPE_UNKNOWN Tamamlayıcı telefon bilinmeyen bir cihaz.
DEVICE_TYPE_ERROR Eşlenen telefonun türü belirlenirken hata oluştu. Daha sonra başka bir kontrol yapılması gerekir.

Android telefondan başlayan uygulama algılama özelliği

Android telefonunuz kullanıcıların Wear OS cihazlarında saat uygulamanızın olup olmadığını algılayabilir. Şu adımları uygulayın:

  1. NodeClient sayesinde kullanıcının telefonuna bağlı tüm kol saatlerini bulun. Daha fazla bilgi için GitHub'daki örnek uygulamaya göz atın.
  2. CapabilityClient aracını kullanarak uygulamanızın hangi kullanıcı kol saatlerinde yüklü olduğunu kontrol edin.
  3. Uygulamanız kullanıcının tüm saatlerinde yüklü değilse kullanıcının RemoteActivityHelper.startRemoteActivity() yöntemini kullanarak telefondan kalan Wear OS cihazlarda Play Store'u açmasına izin verin. Wear OS uygulaması için pazar URI'sini kullanın. Bu URI, telefon uygulamanızın URI'sından farklı olabilir. Örneğin, şu gibi bir pazar URI'si kullanın: market://details?id=com.example.android.wearable.wear.finddevices.

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

iPhone'larla eşlenen kol saatlerinde, saatteki konum verilerini almak için Çok Kaynaklı Konum Sağlayıcı'yı (FLP) kullanın. Daha fazla bilgi için Wear OS'te konumu algılama bölümüne bakın.

Tamamlayıcı telefon varsa FLP, konum verileri için tamamlayıcı telefonu kullanır.

Yalnızca gerekli verileri elde etmek

Genellikle, internetten veri elde ederken yalnızca gerekli verileri elde edersiniz. Aksi takdirde, gereksiz gecikme, bellek kullanımı ve pil kullanımına neden olabilirsiniz.

Bir saat Bluetooth LE bağlantısı üzerinden bağlandığında uygulamanız saate bağlı olarak saniyede yalnızca 4 kilobaytlık bant genişliğine erişebilir. Bu nedenle, aşağıdaki adımlar önerilir:

  • Yalnızca telefon uygulaması için gereken ek veriler için ağ isteklerinizi ve yanıtlarınızı denetleyin.
  • Büyük resimleri bir ağ üzerinden saatinize göndermeden önce küçültün.

Yüksek bant genişliğine sahip ağın gerekli olduğu durumlar için Yüksek bant genişliğinde ağ erişimi bölümüne bakın.

Ek kod örnekleri

WearVerifyRemoteApp örneğinde, bu sayfada açıklanan API'lerin kullanımı daha ayrıntılı olarak gösterilmektedir.