Wear OS डिवाइसों पर, टाइल दो मुख्य कॉम्पोनेंट की मदद से रेंडर की जाती हैं. ये कॉम्पोनेंट, अलग-अलग वर्शन के साथ काम करते हैं. यह पक्का करने के लिए कि आपके ऐप्लिकेशन की टाइल सभी डिवाइसों पर सही तरीके से काम करें, इस आर्किटेक्चर को समझना ज़रूरी है.
- Jetpack टाइल से जुड़ी लाइब्रेरी: ये लाइब्रेरी (इनमें Wear टाइल और Wear ProtoLayout शामिल हैं) आपके ऐप्लिकेशन में एम्बेड होती हैं. साथ ही, डेवलपर के तौर पर आपके पास इनके वर्शन को कंट्रोल करने का विकल्प होता है. आपका ऐप्लिकेशन, सिस्टम के
onTileRequest()
कॉल के जवाब में,TileBuilder.Tile
ऑब्जेक्ट (आपकी टाइल को दिखाने वाला डेटा स्ट्रक्चर) बनाने के लिए, इन लाइब्रेरी का इस्तेमाल करता है. - ProtoLayout रेंडरर: यह सिस्टम कॉम्पोनेंट, डिसप्ले पर
Tile
ऑब्जेक्ट को रेंडर करने और उपयोगकर्ता इंटरैक्शन को मैनेज करने के लिए ज़िम्मेदार है. रेंडरर के वर्शन को ऐप्लिकेशन डेवलपर कंट्रोल नहीं करता. यह अलग-अलग डिवाइसों पर अलग-अलग हो सकता है. भले ही, उन डिवाइसों का हार्डवेयर एक जैसा हो.
आपके ऐप्लिकेशन के Jetpack Tiles लाइब्रेरी के वर्शन और उपयोगकर्ता के डिवाइस पर मौजूद ProtoLayout रेंडरर के वर्शन, दोनों के आधार पर टाइल का दिखना या काम करने का तरीका अलग-अलग हो सकता है. उदाहरण के लिए, हो सकता है कि एक डिवाइस पर रोटेशन की सुविधा काम करे या धड़कन की दर का डेटा दिखे, लेकिन दूसरे डिवाइस पर ऐसा न हो.
इस दस्तावेज़ में यह पक्का करने का तरीका बताया गया है कि आपका ऐप्लिकेशन, Tiles लाइब्रेरी और ProtoLayout रेंडरर के अलग-अलग वर्शन के साथ काम करता है. साथ ही, इसमें Jetpack लाइब्रेरी के नए वर्शन पर माइग्रेट करने का तरीका भी बताया गया है.
डिवाइसों के साथ काम करने की क्षमता
अलग-अलग डिवाइसों पर सही तरीके से काम करने वाली टाइल बनाने के लिए, आपको इन बातों का ध्यान रखना चाहिए.
रेंडरर के वर्शन का पता लगाना
- onTileRequest() तरीके में पास किए गए
DeviceParameters
ऑब्जेक्ट केgetRendererSchemaVersion()
तरीके का इस्तेमाल करें. यह तरीका, डिवाइस पर ProtoLayout रेंडरर के मेजर और माइनर वर्शन नंबर दिखाता है. - इसके बाद,
onTileRequest()
लागू करने के लिए कंडीशनल लॉजिक का इस्तेमाल किया जा सकता है. इससे, टाइल के डिज़ाइन या व्यवहार को, रेंडरर के पता लगाए गए वर्शन के आधार पर अडजस्ट किया जा सकता है.- उदाहरण के लिए, अगर कोई खास ऐनिमेशन काम नहीं करता है, तो उसकी जगह पर स्टैटिक इमेज दिखाई जा सकती है.
@RequiresSchemaVersion
एनोटेशन
- ProtoLayout के तरीकों पर मौजूद
@RequiresSchemaVersion
एनोटेशन से पता चलता है कि उस तरीके के काम करने के लिए, रेंडरर स्कीमा का कम से कम कौनसा वर्शन ज़रूरी है, जैसा कि दस्तावेज़ में बताया गया है (उदाहरण).- अगर किसी ऐसे तरीके को कॉल किया जाता है जिसके लिए डिवाइस पर उपलब्ध रेंडरर वर्शन से ज़्यादा वर्शन की ज़रूरत होती है, तो आपका ऐप्लिकेशन क्रैश नहीं होगा. हालांकि, इससे कॉन्टेंट न दिखने या सुविधा को अनदेखा किए जाने की समस्या हो सकती है.
उदाहरण
override fun onTileRequest(
requestParams: TileService.TileRequest
): ListenableFuture<Tile> {
val rendererVersion =
requestParams.deviceConfiguration.rendererSchemaVersion
val tile = Tile.Builder()
if (
rendererVersion.major > 1 ||
(rendererVersion.major == 1 && rendererVersion.minor >= 300)
) {
// Use a feature supported in renderer version 1.300 or later
tile.setTileTimeline(/* ... */ )
} else {
// Provide fallback content for older renderers
tile.setTileTimeline(/* ... */ )
}
return Futures.immediateFuture(tile.build())
}
रेंडरर के अलग-अलग वर्शन के साथ टेस्ट करना
अपनी टाइल को रेंडरर के अलग-अलग वर्शन के साथ टेस्ट करने के लिए, उन्हें Wear OS एमुलेटर के अलग-अलग वर्शन पर डिप्लॉय करें. (फ़िज़िकल डिवाइसों पर, ProtoLayout रेंडरर के अपडेट, Play Store या सिस्टम अपडेट से डिलीवर किए जाते हैं. किसी खास रेंडरर वर्शन को इंस्टॉल करने के लिए, उसे ज़बरदस्ती नहीं किया जा सकता.)
Android Studio की टाइल की झलक देखने की सुविधा, 'Jetpack ProtoLayout' लाइब्रेरी में एम्बेड किए गए रेंडरर का इस्तेमाल करती है. आपका कोड इस लाइब्रेरी पर निर्भर करता है. इसलिए, टाइल की जांच करते समय, 'Jetpack' लाइब्रेरी के अलग-अलग वर्शन का इस्तेमाल किया जा सकता है.
Jetpack लाइब्रेरी अपग्रेड करना
नई सुविधाओं का फ़ायदा पाने के लिए, अपनी Jetpack टाइल लाइब्रेरी अपडेट करें. इनमें यूज़र इंटरफ़ेस (यूआई) में किए गए बदलाव भी शामिल हैं, ताकि आपकी टाइल सिस्टम के साथ आसानी से इंटिग्रेट हो सकें.
Tiles 1.2 / ProtoLayout 1.0 पर माइग्रेट करना
वर्शन 1.2 के हिसाब से, ज़्यादातर टाइल लेआउट एपीआई, androidx.wear.protolayout
नेमस्पेस में हैं. नए एपीआई का इस्तेमाल करने के लिए, अपने कोड में माइग्रेशन के लिए यह तरीका अपनाएं.
डिपेंडेंसी अपडेट करना
अपने ऐप्लिकेशन मॉड्यूल की बिल्ड फ़ाइल में, ये बदलाव करें:
Groovy
// Removeimplementation 'androidx.wear.tiles:tiles-material:version'// Include additional dependencies implementation "androidx.wear.protolayout:protolayout:1.2.1" implementation "androidx.wear.protolayout:protolayout-material:1.2.1" implementation "androidx.wear.protolayout:protolayout-expression:1.2.1" // Update implementation "androidx.wear.tiles:tiles:1.4.1"
Kotlin
// Removeimplementation("androidx.wear.tiles:tiles-material:version")// Include additional dependencies implementation("androidx.wear.protolayout:protolayout:1.2.1") implementation("androidx.wear.protolayout:protolayout-material:1.2.1") implementation("androidx.wear.protolayout:protolayout-expression:1.2.1") // Update implementation("androidx.wear.tiles:tiles:1.4.1")
नेमस्पेस अपडेट करना
अपने ऐप्लिकेशन की Kotlin और Java-आधारित कोड फ़ाइलों में, ये अपडेट करें. इसके अलावा, नेमस्पेस का नाम बदलने वाली स्क्रिप्ट को भी चलाया जा सकता है.
- सभी
androidx.wear.tiles.material.*
इंपोर्ट कोandroidx.wear.protolayout.material.*
से बदलें.androidx.wear.tiles.material.layouts
लाइब्रेरी के लिए भी यह चरण पूरा करें. ज़्यादातर अन्य
androidx.wear.tiles.*
इंपोर्ट कोandroidx.wear.protolayout.*
से बदलें.androidx.wear.tiles.EventBuilders
,androidx.wear.tiles.RequestBuilders
,androidx.wear.tiles.TileBuilders
, औरandroidx.wear.tiles.TileService
के लिए इंपोर्ट में कोई बदलाव नहीं होना चाहिए.TileService और TileBuilder क्लास के कुछ ऐसे तरीकों के नाम बदलें जो अब काम नहीं करते:
TileBuilders
:getTimeline()
सेgetTileTimeline()
औरsetTimeline()
सेsetTileTimeline()
TileService
:onResourcesRequest()
सेonTileResourcesRequest()
तकRequestBuilders.TileRequest
:getDeviceParameters()
सेgetDeviceConfiguration()
,setDeviceParameters()
सेsetDeviceConfiguration()
,getState()
सेgetCurrentState()
, औरsetState()
सेsetCurrentState()
- ध्यान दें: JavaScript बंद होने पर लिंक टेक्स्ट दिखता है
- टाइल का इस्तेमाल शुरू करना
- Wear OS में अपनी पहली टाइल बनाना
- 'टीवी के लिए कॉम्पोज़ करें' सुविधा के बारे में जानकारी