Kadran Gönderme, uygulamanızın Wear OS cihazdaki kadranları yönetmesine olanak tanır. Buna kadran ekleme, güncelleme ve kaldırmanın yanı sıra etkin kadranı ayarlama da dahildir. Wear OS uygulamanızı, Kadran Push API'yi kullanacak şekilde yapılandırın.
Kurulum
Gerekli bağımlılıkları ekleyin:
implementation("androidx.wear.watchface:watchface-push:1.3.0-alpha07")
AndroidManifest.xml
dosyanıza aşağıdakileri ekleyin:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Required to use the Watch Face Push API. -->
<uses-permission android:name="com.google.wear.permission.PUSH_WATCH_FACES" />
<!-- Required to be able to call the setWatchFaceAsActive() method. -->
<uses-permission android:name="com.google.wear.permission.SET_PUSHED_WATCH_FACE_AS_ACTIVE" />
</manifest>
Yönetici örneğine referans alma
WatchFacePushManager
örneğini alın:
val manager = WatchFacePushManager(context)
WatchFacePushManager
, kadran itme özelliğiyle etkileşime geçmek için tüm yöntemlere erişim sağlar.
Yuvalarla çalışma
Kadran Push ile çalışırken temel kavramlardan biri slot'lardır. Yuvalar, uygulamanıza ait yüklü kadranlara erişmenin bir yoludur. Sistem, bir pazar yerinin sahip olabileceği maksimum slot sayısını belirler. Wear OS 6'ta bu sınır 1'dir.
Bir kadranı güncellerken veya kaldırırken, işlemin yapılacağı kadranı tanımlamak için slotId
kullanılır.
Kadran listelemesi
Yüklü kadran grubunu listelemek için listWatchFaces()
simgesini kullanın:
val response = watchFacePushManager.listWatchFaces()
val installedList = response.installedWatchFaceDetails
val remainingSlots = response.remainingSlots
Bu sayede, yuvanın kullanılabilir olup olmadığını veya başka bir kadran eklemek için mevcut kadranı değiştirmeniz gerekip gerekmediğini belirleyebilirsiniz. Listede, yüklü kadranla ilgili ayrıntılar da gösterilir. Örneğin, belirli bir kadran paketinin yüklü olup olmadığını kontrol etmek için:
suspend fun isInstalled(packageName: String) = watchFacePush.listWatchFaces()
.installedWatchFaceDetails.any { it.packageName == packageName }
Kadran ekleme
listWatchFaces
yanıtına göre boş alan varsa addWatchFace()
yöntemi kullanılmalıdır:
try {
// Supply the validation token along with the watch face package data itself.
val slot = watchFacePushManager.addWatchFace(parcelFileDescriptor, token)
Log.i(TAG, "${slot.packageName} (${slot.versionCode}) added in slot ${slot.slotId}")
} catch (e: AddWatchFaceException) {
// Something went wrong adding the watch face.
}
Kadran güncelleme
Kadran güncelleme, belirli bir yuvanın içeriğini yeni bir paketle değiştirmenize olanak tanır. Bu işlem, aynı kadranı daha yeni bir sürüme yükseltme veya kadranı tamamen başka bir kadranla değiştirme olabilir.
// Replacing the com.example.watchfacepush.green watch face with
// com.example.watchfacepush.red.
val slotId = watchFacePushManager.listWatchFaces().installedWatchFaceDetails.
firstOrNull { it.packageName == "com.example.watchfacepush.green" }?.slotId
try {
watchFacePushManager.updateWatchFace(slotId, redParcelFileDesc, redValidationToken)
} catch (e: UpdateWatchFaceException) {
// Something went wrong updating the watch face.
}
Kadran kaldırma
Bir kadranı kaldırmak için:
// Remove the com.example.watchfacepush.green watch face.
val slotId = watchFacePushManager.listWatchFaces().installedWatchFaceDetails.
firstOrNull { it.packageName == "com.example.watchfacepush.green" }?.slotId
try {
watchFacePushManager.removeWatchFace(slotId)
} catch (e: RemoveWatchFaceException) {
// Something went wrong removing the watch face.
}
Bu sayede kadranınız sistem kadran seçicide her zaman bulunabilir, logonuzu belirgin bir şekilde gösterebilir ve hatta telefonda Marketplace uygulamanızı başlatan bir düğme bile içerebilir.
Kadranınızın etkin olup olmadığını kontrol etme
Pazar yerinizin etkin kadranı ayarlayıp ayarlamadığını belirlemek, kullanıcının sorunsuz bir deneyim yaşamasını sağlamak açısından önemlidir: Pazar yerinde etkin kadran ayarlanmışsa kullanıcının başka bir kadran seçmesi gerekir. Bunun için kullanıcının, pazar yeri uygulaması üzerinden mevcut kadranı değiştirmesi yeterlidir. Ancak pazar yerinde etkin kadran ayarlanmamışsa telefon uygulaması kullanıcıya daha fazla rehberlik sunmalıdır. Bu kullanıcı deneyimini nasıl ele alacağınızla ilgili daha fazla bilgi için telefon uygulamasıyla ilgili bölüme bakın.
Pazar yerinde etkin kadran ayarlanıp ayarlanmadığını belirlemek için:
Varsayılan kadran sağlama
Watch Face Push, pazar yeri uygulamanız yüklendiğinde varsayılan bir kadran yükleme olanağı sunar. Bu işlem, varsayılan kadranı etkin olarak ayarlamaz (etkin kadranı ayarlama bölümüne bakın) ancak kadranınızın sistem kadran seçicide gösterilmesini sağlar.
Bu özelliği kullanmak için:
- Wear OS uygulama derlemenizdeki yola varsayılan kadranı ekleyin:
assets/default_watchface.apk
AndroidManifest.xml
dosyanıza aşağıdaki girişi ekleyin<application ...> <meta-data android:name="com.google.android.wearable.marketplace.DEFAULT_WATCHFACE_VALIDATION_TOKEN" android:value="@string/default_wf_token" />
Etkin kadranı ayarlama
Kadran itme, pazar yeri uygulamasının etkin kadranı ayarlaması için gerekli olan aracı sağlar.
Bu, uygulamanın etkin kadranı, mevcut etkin kadran pazar yerine ait değilse pazar yerine ait bir kadrana ayarlayabileceği anlamına gelir. Pazar yerinde zaten etkin bir kadran varsa bu kadranı başka bir kadranla değiştirmenin, kadran yuvasının içeriğini başka bir kadranla değiştirmek için updateWatchFace
çağrısı aracılığıyla yapıldığını unutmayın.
Etkin kadranı ayarlama işlemi iki aşamada gerçekleşir:
- Etkin kadranı ayarlamak için gereken Android iznini alın.
setWatchFaceAsActive
yöntemini çağırın.
Etkin kadranı ayarlama izni alma
Gerekli izin SET_PUSHED_WATCH_FACE_AS_ACTIVE
'tür ve manifest dosyanıza eklenmelidir:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
...
<uses-permission android:name="com.google.wear.permission.SET_PUSHED_WATCH_FACE_AS_ACTIVE" />
</manifest>
Bu bir çalışma zamanında izin olduğundan uygulamanız, çalışırken kullanıcıdan bu izni istemelidir (Bunun için eşlik eden kitaplığını kullanabilirsiniz).
Kadranı etkin olarak ayarlama
İzin verildikten sonra, etkin olması gereken kadran yuvasının kimliğinde setWatchFaceAsActive
'ü çağırın:
watchFacePushManager.setWatchFaceAsActive(slotId)
Bu yöntem kullanıldıktan sonra telefon uygulamanız, etkin kadranı manuel olarak ayarlama konusunda yol gösterici bilgiler sunar.
Kadran APK'nızdaki ek meta verileri okuma
WatchFaceSlot
nesnesi, kadranınızda beyan edebileceğiniz ek bilgileri almanızı da sağlar.
Bu, özellikle aynı kadran için küçük varyantlara sahip olduğunuz senaryolarda yararlı olabilir. Örneğin, tanımlanmış bir kadranınız olabilir:
- Paket adı:
com.myapp.watchfacepush.mywatchface
- Paket sürümü:
1.0.0
Ancak bu kadran dört farklı APK olarak gelebilir. Bu APK'ların hepsi neredeyse aynıdır ancak farklı varsayılan renklere sahiptir: kırmızı, sarı, yeşil ve mavi. Bu renkler, kadran biçimi XML'inde bir ColorConfiguration
içinde ayarlanır.
Bu küçük farklılık, dört APK'nın her birine yansıtılır:
<!-- For watch face com.myapp.watchfacepush.mywatchface -->
<property
android:name="default_color"
android:value="red" />
Özel mülk kullanmak, uygulamanızın aşağıdaki varyantlardan hangisinin yüklendiğini belirlemesine olanak tanır:
watchFaceDetails
.getMetaDataValues("com.myapp.watchfacepush.mywatchface.default_color")
.invoke()
Dikkat edilmesi gereken noktalar
Uygulamanızda kadran itme özelliğini uygularken dikkat etmeniz gereken önemli noktalar arasında güç tüketimine odaklanmak, önbelleğe alma, paketlenmiş kadranları güncelleme ve temsili bir varsayılan kadran sunma yer alır.
Güç
Wear OS'te çalışan tüm uygulamalar için güç tüketimi önemli bir husustur. Pazar yeri uygulamanızın Wear OS bileşeni için:
- Uygulamanız, kullanıcı tarafından doğrudan etkileşim kurulmadığı sürece mümkün olduğunca az ve seyrek çalışmalıdır. Buna aşağıdakiler dahildir:
- Uygulamanın telefon uygulamasından uyandırılmasını en aza indirme
- WorkManager işlerinin çalışmasını en aza indirme
- Analytics raporlarını saat şarj olurken planlama:
- Wear OS uygulamasındaki kullanım istatistiklerini veya başka metrikleri bildirmek istiyorsanız WorkManager'ı
requiresCharging
kısıtlamasıyla kullanın.
- Wear OS uygulamasındaki kullanım istatistiklerini veya başka metrikleri bildirmek istiyorsanız WorkManager'ı
- Kol saati şarj olurken ve kablosuz ağ kullanırken güncellemeleri planlama:
- Yüklü kadranların sürümlerini kontrol edip otomatik olarak güncelleyebilirsiniz. Yine
requiresCharging
kısıtlamasını verequiresNetworkType
içinUNMETERED
ağ türünü kullanın. - Şarj olurken cihazın kablosuz ağa erişimi olabilir. Güncellenen APK'ları hızlı bir şekilde indirmek için kablosuz ağ isteyin ve indirme işlemi tamamlandığında ağı serbest bırakın.
- Pazar yerinin günün kadranını sunabileceği durumlarda da aynı kılavuz geçerlidir. Kadran, kol saati şarj olurken önceden indirilmelidir.
- Yüklü kadranların sürümlerini kontrol edip otomatik olarak güncelleyebilirsiniz. Yine
- Etkin kadranı kontrol etmek için iş planlamayın:
- Pazar yerinizin hâlâ etkin kadran kullanıp kullanmadığını ve hangi kadranı kullandığını düzenli olarak kontrol etmek, pilin daha hızlı tükenmesine neden olur. Bu yaklaşımdan kaçının.
- Kol saatinde bildirimleri kullanma:
- Uygulamanızda bildirim kullanılıyorsa bu bildirimleri telefona odaklayın. Kullanıcı işlemi, yolculuğa devam etmek için telefon uygulamasını açar. Bu öğelerin
setLocalOnly
simgesini kullanarak kol saati uygulamasına geçmediğinden emin olun.
- Uygulamanızda bildirim kullanılıyorsa bu bildirimleri telefona odaklayın. Kullanıcı işlemi, yolculuğa devam etmek için telefon uygulamasını açar. Bu öğelerin
Önbelleğe alınıyor
Standart pazar yeri örneğinde, kadranlar telefondan kol saatine aktarılır. Bu bağlantı genellikle Bluetooth bağlantısıdır ve oldukça yavaş olabilir.
Hem daha iyi bir kullanıcı deneyimi sunmak hem de yeniden iletim gücünü korumak için Wear OS cihazda birkaç APK'yı depolamak üzere küçük bir önbellek uygulamayı düşünebilirsiniz.
Kullanıcının başka bir kadranı denedikten sonra daha önce seçtiği kadrana geri dönmeye karar vermesi durumunda bu işlem neredeyse anında gerçekleşir.
Benzer şekilde, bu özellik günün kadranı veya Wear OS cihaz şarj olurken kadranların indirildiği benzer şemalarda ön önbelleğe alma için kullanılabilir.
Paket halindeki kadranları güncelleme
Uygulamanız, daha önce açıklandığı gibi varsayılan bir kadran öğesi içerebilir. Bu kadran, pazar yeri uygulamanız yüklendiğinde sisteme yüklenir ancak pazar yeri uygulamanızdaki bir güncellemeyle birlikte yeni bir sürüm paketlenirse kadran güncellenmez.
Bu durumu ele almak için pazar yeri uygulamanız MY_PACKAGE_REPLACED
yayın işlemini dinlemeli ve paket öğelerinden paketlenmiş kadranların güncellenmesi gerekip gerekmediğini kontrol etmelidir.
Temsil niteliğinde varsayılan kadran
Varsayılan kadran, kullanıcılarınızın pazar yerinizi keşfetmesine ve kullanmasına yardımcı olmanın mükemmel bir yoludur: Kadran, pazar yeriniz yüklendiğinde yüklenir. Böylece kullanıcılar kadranı kadran galerisinde bulabilir.
Varsayılan kadranlarla çalışırken dikkat edilmesi gereken bazı noktalar:
- Kullanıcı, pazar yeri uygulamanızdan bir kadranı kaldırmayı seçerse
removeWatchFace
işlevini kullanmayın. Bunun yerine, bu durumdaupdateWatchFace
işlevini kullanarak kadranı varsayılan kadrana geri döndürün. Bu, kullanıcıların kadranınızı galeriden bulup ayarlamalarına yardımcı olur. - Logonuz ve temanızla varsayılan kadranı basit ve anında tanınabilir hale getirin. Bu sayede kullanıcılar kadranı kadran galerisinde bulabilir.
Telefon uygulamasını açmak için varsayılan kadrana bir düğme ekleyin. Bu işlem iki aşamada gerçekleştirilebilir:
Wear OS uygulamasını kullanarak bir intent başlatmak için kadrana
Launch
öğesi ekleyin. Örneğin:<Launch target="com.myapp/com.myapp.LaunchOnPhoneActivity" />
LaunchOnPhoneActivity
'teRemoteActivityHelper
düğmesini kullanarak telefon uygulamasını başlatın.