در دستگاههای Wear OS، کاشیها توسط دو جزء کلیدی با نسخهسازی مستقل ارائه میشوند. برای اطمینان از عملکرد صحیح کاشی های برنامه های شما در همه دستگاه ها، درک این معماری اساسی مهم است.
- کتابخانههای مربوط به کاشیهای Jetpack : این کتابخانهها (از جمله Wear Tiles و Wear ProtoLayout) در برنامه شما تعبیه شدهاند و شما بهعنوان توسعهدهنده، نسخههای آنها را کنترل میکنید. برنامه شما از این کتابخانه ها برای ساختن یک شی
TileBuilder.Tile
(ساختار داده نشان دهنده Tile شما) در پاسخ به فراخوانیonTileRequest()
سیستم استفاده می کند. - ProtoLayout Renderer: این جزء سیستم مسئول رندر کردن شی
Tile
در صفحه نمایش و مدیریت تعاملات کاربر است. نسخه رندر توسط توسعهدهنده برنامه کنترل نمیشود و میتواند در دستگاههای مختلف، حتی دستگاههایی که سختافزار یکسان دارند، متفاوت باشد.
ظاهر یا رفتار یک کاشی می تواند بر اساس نسخه های کتابخانه Jetpack Tiles برنامه شما و نسخه ProtoLayout Renderer در دستگاه کاربر متفاوت باشد. به عنوان مثال، ممکن است یک دستگاه از چرخش یا نمایش داده های ضربان قلب پشتیبانی کند و دیگری ممکن است نه.
این سند نحوه اطمینان از سازگاری برنامه شما با نسخههای مختلف کتابخانه Tiles و ProtoLayout Renderer و نحوه مهاجرت به نسخههای کتابخانه Jetpack بالاتر را توضیح میدهد.
سازگاری را در نظر بگیرید
برای ایجاد یک کاشی که در طیف وسیعی از دستگاه ها به درستی عمل می کند، باید موارد زیر را در نظر بگیرید.
نسخه رندر را شناسایی کنید
- از متد
getRendererSchemaVersion()
از شیDeviceParameters
که به متد ()onTileRequest شما ارسال شده است استفاده کنید. این روش شماره نسخه اصلی و فرعی ProtoLayout Renderer را بر روی دستگاه برمی گرداند. - سپس میتوانید از منطق شرطی در پیادهسازی
onTileRequest()
برای تطبیق طرح یا رفتار Tile خود بر اساس نسخه رندر شناساییشده استفاده کنید.- به عنوان مثال، اگر یک انیمیشن خاص پشتیبانی نمی شود، می توانید به جای آن یک تصویر ثابت نمایش دهید.
حاشیه نویسی @RequiresSchemaVersion
- حاشیه نویسی
@RequiresSchemaVersion
در روش های ProtoLayout حداقل نسخه طرحواره رندر مورد نیاز برای رفتار آن روش را به صورت مستند نشان می دهد ( مثال ).- در حالی که فراخوانی روشی که به نسخه رندر بالاتری نسبت به موجود در دستگاه نیاز دارد، باعث از کار افتادن برنامه شما نمی شود، ممکن است منجر به نمایش داده نشدن محتوا یا نادیده گرفتن ویژگی شود.
مثال
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 Renderer توسط Play Store یا بهروزرسانیهای سیستم ارائه میشوند. نمیتوان یک نسخه رندر خاص را مجبور کرد نصب شود.)
ویژگی پیشنمایش کاشی اندروید استودیو از یک رندر تعبیهشده در کتابخانه Jetpack ProtoLayout که کد شما به آن وابسته است استفاده میکند، بنابراین رویکرد دیگر این است که هنگام آزمایش کاشیها به نسخههای مختلف کتابخانه Jetpack وابسته باشید.
کتابخانه های Jetpack را ارتقا دهید
کتابخانههای Jetpack Tile خود را بهروزرسانی کنید تا از آخرین پیشرفتها، از جمله تغییرات UI برای ادغام یکپارچه کاشیها با سیستم، استفاده کنید.
به Tiles 1.2 / ProtoLayout 1.0 مهاجرت کنید
از نسخه 1.2، بیشتر APIهای طرح بندی کاشی ها در فضای نام androidx.wear.protolayout
قرار دارند. برای استفاده از آخرین APIها، مراحل انتقال زیر را در کد خود تکمیل کنید.
به روز رسانی وابستگی ها
در فایل ساخت ماژول برنامه، تغییرات زیر را اعمال کنید:
شیار
// 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"
کاتلین
// 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 و جاوا برنامه خود، به روز رسانی های زیر را انجام دهید. از طرف دیگر، می توانید این اسکریپت تغییر نام فضای نام را اجرا کنید.
- همه واردات
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()
-
{% کلمه به کلمه %}
- توجه: وقتی جاوا اسکریپت خاموش است، متن پیوند نمایش داده می شود
- با کاشی شروع کنید
- اولین کاشی خود را در Wear OS ایجاد کنید
- مقدمه ای بر آهنگسازی برای تلویزیون