वॉच फ़ेस पुश की सुविधा की मदद से, आपका ऐप्लिकेशन Wear OS डिवाइस पर स्मार्टवॉच की होम स्क्रीन मैनेज कर सकता है. इसमें वॉच फ़ेस जोड़ना, अपडेट करना, और हटाना शामिल है. साथ ही, इसमें मौजूदा वॉच फ़ेस को सेट करना भी शामिल है. Wear OS ऐप्लिकेशन को Watch Face Push API का इस्तेमाल करने के लिए कॉन्फ़िगर करें.
सेटअप
ज़रूरी डिपेंडेंसी शामिल करें:
implementation("androidx.wear.watchfacepush:watchfacepush:1.0.0-alpha01")
अपनी AndroidManifest.xml
में यह जोड़ें:
<?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>
मैनेजर इंस्टेंस का रेफ़रंस पाना
WatchFacePushManager
का इंस्टेंस पाएं:
val manager = WatchFacePushManagerFactory.createWatchFacePushManager(context)
WatchFacePushManager
, वॉच फ़ेस पुश के साथ इंटरैक्ट करने के सभी तरीकों का ऐक्सेस देता है.
स्लॉट के साथ काम करना
वॉच फ़ेस पुश के साथ काम करते समय, स्लॉट एक मुख्य कॉन्सेप्ट है. स्लॉट, इंस्टॉल किए गए उन वॉच फ़ेस को ऐक्सेस करने का तरीका है जो आपके ऐप्लिकेशन से जुड़े हैं. सिस्टम, मार्केटप्लेस के लिए ज़्यादा से ज़्यादा स्लॉट सेट करता है. Wear OS 6 के साथ, यह सीमा 1 है.
वॉच फ़ेस को अपडेट या हटाने के दौरान, slotId
का इस्तेमाल उस वॉच फ़ेस की पहचान करने के लिए किया जाता है जिस पर कार्रवाई करनी है.
वॉच फ़ेस की सूची
इंस्टॉल की गई स्मार्ट वॉच की होम स्क्रीन की सूची देखने के लिए, listWatchFaces()
का इस्तेमाल करें:
val response = watchFacePushManager.listWatchFaces()
val installedList = response.installedWatchFaceDetails
val remainingSlots = response.remainingSlots
इससे यह पता चलता है कि स्लॉट उपलब्ध है या किसी दूसरी होम स्क्रीन को जोड़ने के लिए, मौजूदा होम स्क्रीन को बदलना होगा. इस सूची में, इंस्टॉल की गई होम स्क्रीन के बारे में भी जानकारी मिलती है. उदाहरण के लिए, यह देखने के लिए कि स्मार्टवॉच की होम स्क्रीन का कोई पैकेज इंस्टॉल किया गया है या नहीं:
suspend fun isInstalled(packageName: String) = watchFacePush.listWatchFaces()
.installedWatchFaceDetails.any { it.packageName == packageName }
वॉच फ़ेस जोड़ना
अगर listWatchFaces
रिस्पॉन्स के हिसाब से स्लॉट उपलब्ध हैं, तो addWatchFace()
तरीके का इस्तेमाल किया जाना चाहिए:
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.
}
वॉच फ़ेस अपडेट करना
वॉच फ़ेस अपडेट करने पर, किसी स्लॉट के कॉन्टेंट को नए पैकेज से बदला जा सकता है. ऐसा हो सकता है कि उसी वॉच फ़ेस को नए वर्शन में अपग्रेड किया गया हो या वॉच फ़ेस को पूरी तरह से बदल दिया गया हो.
// 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.
}
स्मार्टवॉच की होम स्क्रीन हटाना
स्मार्टवॉच की होम स्क्रीन हटाने के लिए:
// 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.
}
इससे यह पक्का किया जा सकेगा कि आपके वॉच फ़ेस को सिस्टम वॉच फ़ेस पिकर में हमेशा ढूंढा जा सके. साथ ही, आपके लोगो को प्रमुखता से दिखाया जा सके. इसके अलावा, फ़ोन पर आपके Marketplace ऐप्लिकेशन को लॉन्च करने के लिए एक बटन भी दिखाया जा सकता है.
देखें कि आपका वॉच फ़ेस चालू है या नहीं
यह तय करना ज़रूरी है कि आपके मार्केटप्लेस में ऐक्टिव वॉच फ़ेस सेट है या नहीं. इससे यह पक्का किया जा सकता है कि उपयोगकर्ता को बेहतर अनुभव मिले: अगर मार्केटप्लेस में पहले से ही ऐक्टिव वॉच फ़ेस सेट है, तो अगर उपयोगकर्ता को कोई दूसरा वॉच फ़ेस चुनना है, तो उसे मार्केटप्लेस ऐप्लिकेशन के ज़रिए मौजूदा वॉच फ़ेस को बदलना होगा. हालांकि, अगर मार्केटप्लेस में ऐक्टिव वॉच फ़ेस सेट नहीं है, तो फ़ोन ऐप्लिकेशन को उपयोगकर्ता को ज़्यादा जानकारी देनी होगी. उपयोगकर्ता अनुभव को मैनेज करने के तरीके के बारे में ज़्यादा जानने के लिए, फ़ोन ऐप्लिकेशन के बारे में दिया गया सेक्शन देखें.
मार्केटप्लेस ने मौजूदा वॉच फ़ेस सेट किया है या नहीं, यह पता लगाने के लिए इस लॉजिक का इस्तेमाल करें:
val hasActiveWatchFace = watchFacePushManager.listWatchFaces()
.installedWatchFaceDetails
.any {
watchFacePushManager.isWatchFaceActive(it.packageName)
}
डिफ़ॉल्ट वॉच फ़ेस उपलब्ध कराना
वॉच फ़ेस पुश की सुविधा से, मार्केटप्लेस ऐप्लिकेशन इंस्टॉल होने पर डिफ़ॉल्ट वॉच फ़ेस इंस्टॉल किया जा सकता है. इससे डिफ़ॉल्ट वॉच फ़ेस अपने-आप चालू नहीं होता. इसके लिए, आपको वॉच फ़ेस चालू करने की सेटिंग देखनी होगी. हालांकि, इससे यह पक्का हो जाएगा कि आपका वॉच फ़ेस, सिस्टम के वॉच फ़ेस पिकर में उपलब्ध हो.
इस सुविधा का इस्तेमाल करने के लिए:
- Wear OS ऐप्लिकेशन के बिल्ड में, डिफ़ॉल्ट वॉच फ़ेस को इस पाथ में शामिल करें:
assets/default_watchface.apk
अपनी
AndroidManifest.xml
में यह एंट्री जोड़ें<application ...> <meta-data android:name="com.google.android.wearable.marketplace.DEFAULT_WATCHFACE_VALIDATION_TOKEN" android:value="@string/default_wf_token" />
स्मार्टवॉच के मौजूदा वॉच फ़ेस को सेट करना
Watch Face Push की मदद से, Marketplace ऐप्लिकेशन को मौजूदा वॉच फ़ेस सेट करने का विकल्प मिलता है.
इसका मतलब है कि अगर मौजूदा वॉच फ़ेस, Marketplace से नहीं है, तो ऐप्लिकेशन, Marketplace से जुड़े किसी वॉच फ़ेस को मौजूदा वॉच फ़ेस के तौर पर सेट कर सकता है. ध्यान दें कि अगर मार्केटप्लेस में पहले से ही कोई वॉच फ़ेस मौजूद है, तो उसे बदलने के लिए updateWatchFace
को कॉल किया जाता है. इससे वॉच फ़ेस स्लॉट के कॉन्टेंट को दूसरे वॉच फ़ेस से बदला जा सकता है.
वॉच फ़ेस को ऐक्टिव वॉच फ़ेस के तौर पर सेट करने की प्रोसेस में दो चरण होते हैं:
- मौजूदा वॉच फ़ेस को सेट करने के लिए, Android की ज़रूरी अनुमति पाएं.
setWatchFaceAsActive
वाले तरीके को कॉल करें.
मौजूदा वॉच फ़ेस को सेट करने की अनुमतियां पाना
इसके लिए, SET_PUSHED_WATCH_FACE_AS_ACTIVE
अनुमति ज़रूरी है. इसे आपके मेनिफ़ेस्ट में जोड़ा जाना चाहिए:
<?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>
यह रनटाइम की अनुमति है. इसलिए, जब आपका ऐप्लिकेशन चलता है, तब उसे उपयोगकर्ता से इस अनुमति का अनुरोध करना होगा. इसके लिए, Accompanist लाइब्रेरी का इस्तेमाल किया जा सकता है.
वॉच फ़ेस को स्मार्टवॉच के वॉच फ़ेस के तौर पर सेट करें
अनुमति मिलने के बाद, उस वॉच फ़ेस के स्लॉट आईडी पर setWatchFaceAsActive
को कॉल करें जिसे चालू करना है:
watchFacePushManager.setWatchFaceAsActive(slotId)
इस सुविधा का इस्तेमाल करने के बाद, आपके फ़ोन ऐप्लिकेशन को यह जानकारी देनी चाहिए कि मौजूदा वॉच फ़ेस को मैन्युअल तरीके से कैसे सेट किया जाए.
स्मार्ट वॉच की होम स्क्रीन के APK से अतिरिक्त मेटाडेटा पढ़ना
WatchFaceSlot
ऑब्जेक्ट से, आपको ऐसी अतिरिक्त जानकारी भी मिलती है जिसे आपको अपनी होम स्क्रीन पर दिखाना होता है.
यह सुविधा खास तौर पर उन स्थितियों में काम आ सकती है जहां आपके पास एक ही वॉच फ़ेस के कुछ अलग-अलग वर्शन हों. उदाहरण के लिए, आपके पास इस तरह से वॉच फ़ेस तय करने का विकल्प होता है:
- पैकेज का नाम:
com.myapp.watchfacepush.mywatchface
- पैकेज का वर्शन:
1.0.0
हालांकि, यह वॉच फ़ेस चार अलग-अलग APK के तौर पर उपलब्ध हो सकता है. इनमें से सभी APK लगभग एक जैसे होते हैं, लेकिन इनके डिफ़ॉल्ट रंग अलग-अलग होते हैं: लाल, पीला, हरा और नीला. इन्हें Watch Face Format वाले एक्सएमएल में ColorConfiguration
में सेट किया जाता है.
इसके बाद, यह मामूली अंतर इन चारों APK में दिखता है:
<!-- For watch face com.myapp.watchfacepush.mywatchface -->
<property
android:name="default_color"
android:value="red" />
कस्टम प्रॉपर्टी का इस्तेमाल करके, आपका ऐप्लिकेशन यह तय कर सकता है कि इनमें से कौनसे वैरिएंट इंस्टॉल किए गए हैं:
watchFaceDetails
.getMetaDataValues("com.myapp.watchfacepush.mywatchface.default_color")
.invoke()
ज़रूरी बातें
अपने ऐप्लिकेशन में वॉच फ़ेस पुश करने की सुविधा लागू करते समय, इन बातों का ध्यान रखना ज़रूरी है: बैटरी की खपत, कैश मेमोरी, बंडल किए गए वॉच फ़ेस अपडेट करना, और डिफ़ॉल्ट वॉच फ़ेस उपलब्ध कराना.
ताकत
Wear OS पर काम करने वाले किसी भी ऐप्लिकेशन के लिए, बैटरी की खपत एक अहम पहलू है. Marketplace पर उपलब्ध ऐप्लिकेशन के Wear OS कॉम्पोनेंट के लिए:
- आपका ऐप्लिकेशन कम से कम और कभी-कभी ही चलना चाहिए. हालांकि, अगर उपयोगकर्ता सीधे तौर पर ऐप्लिकेशन के साथ इंटरैक्ट कर रहा है, तो ऐसा नहीं होना चाहिए. इसमें ये शामिल हैं:
- फ़ोन ऐप्लिकेशन से ऐप्लिकेशन को चालू करने की सुविधा को कम करना
- WorkManager के जॉब को कम से कम बार चलाना
- स्मार्टवॉच चार्ज होने के दौरान, किसी भी Analytics रिपोर्टिंग को शेड्यूल करें:
- अगर आपको Wear OS ऐप्लिकेशन के इस्तेमाल के आंकड़े या किसी अन्य मेट्रिक की रिपोर्ट करनी है, तो
requiresCharging
कंस्ट्रेंट के साथ WorkManager का इस्तेमाल करें.
- अगर आपको Wear OS ऐप्लिकेशन के इस्तेमाल के आंकड़े या किसी अन्य मेट्रिक की रिपोर्ट करनी है, तो
- अपडेट को तब शेड्यूल करें, जब स्मार्टवॉच चार्ज हो रही हो और वाई-फ़ाई का इस्तेमाल किया जा रहा हो:
- इंस्टॉल किए गए वॉच फ़ेस के वर्शन देखे जा सकते हैं और उन्हें अपने-आप अपडेट होने के लिए सेट किया जा सकता है.
requiresNetworkType
के लिए,requiresCharging
कंस्ट्रेंट औरUNMETERED
नेटवर्क टाइप का इस्तेमाल करें. - चार्जिंग के दौरान, डिवाइस के वाई-फ़ाई से कनेक्ट होने की संभावना ज़्यादा होती है. अपडेट किए गए APK को तुरंत डाउनलोड करने के लिए, वाई-फ़ाई का अनुरोध करें. इसके बाद, डाउनलोड हो जाने पर नेटवर्क को रिलीज़ करें.
- मार्केटप्लेस पर आज का वॉच फ़ेस उपलब्ध होने पर भी यही दिशा-निर्देश लागू होते हैं. वॉच चार्ज करते समय इसे पहले से डाउनलोड कर लें.
- इंस्टॉल किए गए वॉच फ़ेस के वर्शन देखे जा सकते हैं और उन्हें अपने-आप अपडेट होने के लिए सेट किया जा सकता है.
- चालू वॉच फ़ेस की जांच करने के लिए, जॉब शेड्यूल न करें:
- मार्केटप्लेस पर अब भी चालू स्मार्टवॉच की होम स्क्रीन मौजूद है या नहीं, यह देखने के लिए समय-समय पर जांच करने से बैटरी खत्म होती है. इस तरीके का इस्तेमाल न करें.
- स्मार्टवॉच पर सूचनाएं पाने की सुविधा का इस्तेमाल न करें:
- अगर आपका ऐप्लिकेशन सूचनाएं भेजता है, तो उन्हें फ़ोन पर भेजें. इससे उपयोगकर्ता, फ़ोन ऐप्लिकेशन खोलकर अपनी यात्रा जारी रख पाएगा. पक्का करें कि ये
setLocalOnly
का इस्तेमाल करके, स्मार्टवॉच ऐप्लिकेशन से न जुड़ें.
- अगर आपका ऐप्लिकेशन सूचनाएं भेजता है, तो उन्हें फ़ोन पर भेजें. इससे उपयोगकर्ता, फ़ोन ऐप्लिकेशन खोलकर अपनी यात्रा जारी रख पाएगा. पक्का करें कि ये
संचय कर रहा है
कैननिकल मार्केटप्लेस के उदाहरण में, वॉच फ़ेस को फ़ोन से स्मार्टवॉच पर ट्रांसफ़र किया जाता है. आम तौर पर, यह कनेक्शन ब्लूटूथ कनेक्शन होता है, जो काफ़ी धीमा हो सकता है.
उपयोगकर्ताओं को बेहतर अनुभव देने और फिर से ट्रांसमिट करने की सुविधा के लिए, Wear OS डिवाइस में छोटी कैश मेमोरी लागू करें. इससे कुछ APK सेव किए जा सकेंगे.
अगर कोई उपयोगकर्ता किसी दूसरे वॉच फ़ेस को आज़माता है, लेकिन बाद में उसे पहले से चुना गया वॉच फ़ेस वापस चाहिए, तो यह कार्रवाई तुरंत हो जाती है.
इसी तरह, इसका इस्तेमाल दिन के हिसाब से स्मार्टवॉच की होम स्क्रीन या इसी तरह की अन्य स्कीम के लिए प्रीकैशिंग के लिए किया जा सकता है. इन स्कीम में, Wear OS डिवाइस चार्ज होने के दौरान स्मार्टवॉच की होम स्क्रीन डाउनलोड की जाती हैं.
बंडल किए गए वॉच फ़ेस अपडेट करना
आपके ऐप्लिकेशन में, स्मार्टवॉच की होम स्क्रीन की डिफ़ॉल्ट ऐसेट शामिल हो सकती है. इसके बारे में पहले बताया जा चुका है. यह जानना ज़रूरी है कि जब आपका मार्केटप्लेस ऐप्लिकेशन इंस्टॉल किया जाता है, तब यह वॉच फ़ेस सिस्टम में इंस्टॉल हो जाता है. हालांकि, अगर आपके मार्केटप्लेस ऐप्लिकेशन के किसी अपडेट के साथ नया वर्शन बंडल किया जाता है, तो वॉच फ़ेस अपडेट नहीं होता है.
इस स्थिति को मैनेज करने के लिए, आपके मार्केटप्लेस ऐप्लिकेशन को MY_PACKAGE_REPLACED
ब्रॉडकास्ट ऐक्शन के लिए सुनना चाहिए. साथ ही, पैकेज की ऐसेट से बंडल किए गए किसी भी वॉच फ़ेस को अपडेट करने की ज़रूरत है या नहीं, इसकी जांच करनी चाहिए.
डिफ़ॉल्ट होम स्क्रीन की प्रतिनिधि इमेज
डिफ़ॉल्ट वॉच फ़ेस, लोगों को आपके मार्केटप्लेस को खोजने और उसका इस्तेमाल करने में मदद करता है: जब आपका मार्केटप्लेस इंस्टॉल होता है, तब वॉच फ़ेस इंस्टॉल हो जाता है. इसलिए, लोग इसे वॉच फ़ेस गैलरी में ढूंढ सकते हैं.
डिफ़ॉल्ट वॉच फ़ेस इस्तेमाल करते समय इन बातों का ध्यान रखें:
- अगर उपयोगकर्ता, आपके मार्केटप्लेस ऐप्लिकेशन से स्मार्ट वॉच की होम स्क्रीन को अनइंस्टॉल करने का विकल्प चुनता है, तो
removeWatchFace
का इस्तेमाल न करें. इसके बजाय, इस मामले मेंupdateWatchFace
का इस्तेमाल करके, स्मार्ट वॉच की होम स्क्रीन को डिफ़ॉल्ट होम स्क्रीन पर वापस ले जाएं. इससे लोगों को आपकी स्मार्टवॉच की होम स्क्रीन ढूंढने और उसे गैलरी से सेट करने में मदद मिलती है. - वॉच फ़ेस को डिफ़ॉल्ट रूप से सेट करें. साथ ही, इसे अपने लोगो और थीम के ज़रिए आसानी से पहचाने जाने वाला बनाएं. इससे लोगों को वॉच फ़ेस गैलरी में इसे ढूंढने में मदद मिलती है.
फ़ोन ऐप्लिकेशन खोलने के लिए, डिफ़ॉल्ट वॉच फ़ेस में एक बटन जोड़ें. इसे दो चरणों में पूरा किया जा सकता है:
Wear OS ऐप्लिकेशन का इस्तेमाल करके इंटेंट लॉन्च करने के लिए, वॉच फ़ेस में
Launch
एलिमेंट जोड़ें. उदाहरण के लिए:<Launch target="com.myapp/com.myapp.LaunchOnPhoneActivity" />
LaunchOnPhoneActivity
में,RemoteActivityHelper
का इस्तेमाल करके फ़ोन ऐप्लिकेशन लॉन्च करें.