پیشنیازها و راهاندازی
قبلاز شروع، مطمئن شوید محیطتان الزامات زیر را برآورده میکند.
الزامات زمان اجرا
«ابزارکهای Wear» به نسخه ۱.۶.۱ یا بالاتر از
com.google.android.wearable.protolayout.renderer APK در دستگاه هدف نیاز دارد.
نسخه سازگاری از پردازنده را به یکی از روشهای زیر دریافت کنید:
- شبیهساز Wear OS 7: از تصویر شبیهساز Wear OS 7 استفاده کنید. نسخههای پایینتر از ۷ مناسب نیستند. برای دستورالعملهای راهاندازی، به راهاندازی شبیهساز Wear OS 7 مراجعه کنید.
- دستگاه فیزیکی: از دستگاه Wear OS فیزیکی که بهروزرسانیهای خودکار از «فروشگاه Google Play» دریافت میکند یا دستگاه توسعهدهندهای که در «فروشگاه Google Play» به سیستم وارد شده است استفاده کنید.
برای بررسی اینکه چه نسخهای را در دستگاهتان نصب کردهاید، از فرمان زیر استفاده کنید:
adb shell dumpsys package com.google.android.wearable.protolayout.renderer | \
grep -m 1 versionName | \
awk -F= '{print $2}'
پیکربندی Gradle
کتابخانههای «ابزاره Wear» در Google Maven دردسترس است.
۱. پیکربندی نسخه کیت توسعه نرمافزار
مطمئن شوید compileSdk و targetSdk روی ۳۷ یا بالاتر تنظیم شده باشد.
android {
compileSdk = 37
// ...
defaultConfig {
targetSdk = 37
// ...
}
}
۲. افزودن وابستگیها
وابستگیهای زیر را در فایل build.gradle.kts برنامه خود اضافه کنید:
گرووی
dependencies { // Core Wear Widget and Remote Compose libraries implementation "androidx.compose.remote:remote-creation-compose:1.0.0-alpha20" implementation "androidx.compose.remote:remote-core:1.0.0-alpha20" implementation "androidx.glance.wear:wear:1.0.0-alpha19" implementation "androidx.glance.wear:wear-core:1.0.0-alpha19" implementation "androidx.wear.compose.remote:remote-material3:1.0.0-alpha12" // Tooling for previews (optional, but recommended) implementation "androidx.compose.remote:remote-tooling-preview:1.0.0-alpha20" implementation "androidx.wear.compose:compose-ui-tooling:1.7.0" implementation "androidx.wear.tiles:tiles-tooling-preview:1.6.2" debugImplementation "androidx.wear.tiles:tiles-renderer:1.6.2" }
کاتلین
dependencies { // Core Wear Widget and Remote Compose libraries implementation("androidx.compose.remote:remote-creation-compose:1.0.0-alpha20") implementation("androidx.compose.remote:remote-core:1.0.0-alpha20") implementation("androidx.glance.wear:wear:1.0.0-alpha19") implementation("androidx.glance.wear:wear-core:1.0.0-alpha19") implementation("androidx.wear.compose.remote:remote-material3:1.0.0-alpha12") // Tooling for previews (optional, but recommended) implementation("androidx.compose.remote:remote-tooling-preview:1.0.0-alpha20") implementation("androidx.wear.compose:compose-ui-tooling:1.7.0") implementation("androidx.wear.tiles:tiles-tooling-preview:1.6.2") debugImplementation("androidx.wear.tiles:tiles-renderer:1.6.2") }
ساختن ابزاره «سلام دنیا»
«ابزاره Wear» از سرویسی تشکیل شده است که
GlanceWearWidgetService و کلاس ابزارهای را گسترش میدهد که
GlanceWearWidget را گسترش میدهد. میانای کاربر را بااستفاده از
@RemoteComposable تابع تعریف میکنید.
تعریف سرویس
سرویس نقطه ورودی است که سیستم به آن متصل میشود.
برای تعریف ابزارک، سرویسی ایجاد کنید که GlanceWearWidgetService
را گسترش دهد و آن را با
@AssociateWithGlanceWearWidget
حاشیهنویسی کنید تا سرویس را با کلاس
GlanceWearWidget مناسب مرتبط کنید.
@AssociateWithGlanceWearWidget(HelloWidget::class) class HelloWidgetService : GlanceWearWidgetService() { override val widget: GlanceWearWidget = HelloWidget() }
تعریف ابزاره
کلاس ابزاره دادهها و چیدمان ابزاره را ارائه میدهد.
class HelloWidget : GlanceWearWidget() { override suspend fun provideWidgetData( context: Context, params: WearWidgetParams, ): WearWidgetData { return WearWidgetDocument( background = WearWidgetBrush.color(Color.Blue.rc), ) { HelloWidgetContent() } } }
تعریف محتوا
محتوا بااستفاده از عناصر «ترکیب از دور» ساخته شده است.
@RemoteComposable @Composable fun HelloWidgetContent() { RemoteBox( modifier = RemoteModifier.fillMaxSize(), contentAlignment = RemoteAlignment.Center, ) { RemoteText( text = "Hello World".rs, color = Color.White.rc, ) } }
پیشدید کردن ابزاره در «استودیو Android»
میتوانید چیدمانهای ابزارک را مستقیماً در پانل طراحی
در Android Studio بااستفاده از
androidx.glance.wear:wear-tooling-preview پیشنمایش کنید.
مجموعههای پیشنمایش ازپیشتعریفشده
کتابخانه wear-tooling-preview مجموعههای ازپیش تعریفشدهای
PreviewParameterProvider برای آزمایش چیدمانهایتان در شکلهای مختلف
ظرف و پیکربندیهای دستگاه ارائه میدهد:
- مجموعه مربع با گوشههای گرد (
SquircleAllWidgetPreviewParams): ظرفهای مستطیل گردشده. - مجموعه گرد (
RoundAllWidgetPreviewParams): محفظههای قرصیشکل. - مجموعه مستطیلی (
RectangularAllWidgetPreviewParams): محتویات مستطیلی بدون برش با حاشیه امن. تصاویر تولیدشده با این پیکربندی پیشنمایش برای استفاده بهعنوان تصاویر پیشنمایش جاسازیشده در APK که توسط انتخابگر ابزارک استفاده میشود مناسب است (به تولید داراییهای تصویر پیشنمایش مراجعه کنید).
برای پیشنمایش ابزاره در «استودیو Android»، از @WearWidgetPreview استفاده کنید:
@Preview @Composable fun HelloWidgetPreview( @PreviewParameter(SquircleAllWidgetPreviewParams::class) params: WearWidgetParams, ) { WearWidgetPreview( widget = HelloWidget(), params = params, ) }
ساختن پیکربندی ابزاره XML
فایل جدیدی res/xml/hello_widget_info.xml برای تعریف ویژگیهای ابزاره و اندازههای پشتیبانیشده ایجاد کنید. برای مرجع کامل ویژگیهای XML پشتیبانیشده در برچسب <wearwidget-provider>، به اسناد WearWidgetProviderInfo مراجعه کنید.
<wearwidget-provider description="@string/hello_widget_description" icon="@mipmap/ic_launcher" label="@string/hello_widget_label" preferredType="SMALL"> <container type="SMALL" previewImage="@drawable/widget_preview_small" /> <container type="LARGE" previewImage="@drawable/widget_preview_large" /> </wearwidget-provider>
تولید داراییهای تصویر پیشنمایش
مشخصه previewImage عنصر <container> به دارایی طراحیشدنیای ارجاع میدهد که در انتخابگر ابزاره سیستم نشان داده میشود. برای تولید داراییهای پیشنمایش با
محدوده و تراکم صحیح، از «پیشنمایشهای استودیو Android» با
RectangularAllWidgetPreviewParams (که گونههای پیشنمایش را برای
ظرفهای کوچک و بزرگ تولید میکند) استفاده کنید و تراکم نمایشگر ساعت هوشمند ۳۲۰ نقطه در اینچ را مشخص کنید:
@Preview( name = "Widget Preview Asset", device = "spec:width=1000dp,height=1000dp,dpi=320", ) @Composable fun HelloWidgetCatalogPreview( @PreviewParameter(RectangularAllWidgetPreviewParams::class) params: WearWidgetParams, ) { WearWidgetPreview( widget = HelloWidget(), params = params, ) }
برای استخراج تصاویر پیشنمایش پردازششده، مراحل زیر را تکمیل کنید:
- در Android Studio، سطح طراحی را برای عنصر ترکیبی پیشنمایش باز کنید.
- در پنجره پیشنمایش، روی پیشنمایش پردازششده کلیک راست کنید یا از نوارابزار پیشنمایش برای انتخاب کپی کردن تصویر یا ذخیره کردن تصویر استفاده کنید. یا از ابزارهای خط فرمان یا دستورگانهای خودکارسازیشده برای استخراج پیشنمایشهای «نوشتن» استفاده کنید.
- فایلهای تصویر کوچک و بزرگ را در
res/drawable-nodpi/دایرکتوری برنامه خود ذخیره کنید، مثلاًres/drawable-nodpi/widget_preview_small.pngوres/drawable-nodpi/widget_preview_large.png.
در AndroidManifest.xml ثبت کنید
سرویس را در AndroidManifest.xml خود با فیلترهای هدف و فراداده موردنیاز ثبت کنید.
<service android:name=".snippets.widget.HelloWidgetService" android:exported="true" android:icon="@mipmap/ic_launcher" android:label="@string/hello_widget_label" android:permission="com.google.android.wearable.permission.BIND_TILE_PROVIDER"> <intent-filter> <action android:name="androidx.glance.wear.action.BIND_WIDGET_PROVIDER" /> <!-- If you already have a Tile, omit the following line. --> <action android:name="androidx.wear.tiles.action.BIND_TILE_PROVIDER" /> </intent-filter> <meta-data android:name="androidx.glance.wear.widget.provider" android:resource="@xml/hello_widget_info" /> <meta-data android:name="androidx.wear.tiles.PREVIEW" android:resource="@drawable/tile_preview" /> </service>
ساختن و مستقر کردن
پساز تعریف سرویس و ابزاره، میتوانید پروژهتان را بسازید و آن را در دستگاه یا شبیهساز مستقر کنید.
ساختن و نصب کردن
پروژه را بسازید و APK اشکالزدایی را در دستگاه متصل یا شبیهساز نصب کنید:
./gradlew :app:installDebug
افزودن و پیشنمایش ابزاره
پساز نصب برنامه، از adb برای افزودن برنامهریزیشده ابزاره به
گردونه و نمایش آن در صفحه استفاده کنید.
توجه: «ابزارکهای Wear» از زیرساخت کاشی زیرین برای اهداف اشکالزدایی استفاده میکنند. درنتیجه، دستورات adb به
add-tile و show-tile نیاز دارند.
۱. ابزاره را به گردونه اضافه کنید:
adb shell am broadcast \
-a com.google.android.wearable.app.DEBUG_SURFACE \
--es operation add-tile \
--ecn component <your_package_name>/.HelloWidgetService
۲. نمایش ابزاره:
adb shell am broadcast \
-a com.google.android.wearable.app.DEBUG_SYSUI \
--es operation show-tile \
--ei index 0
بهروزرسانی محتوای ابزاره بهصورت برنامهریزیشده
وقتی دادههای زیربنایی برنامه شما تغییر میکند (مثلاً همگامسازی داده، اعلان لحظهای، یا کنش کاربر دریافت میکند)، به سیستم اطلاع دهید محتوای ابزارک را بازآوری کند.
برای درخواست بهروزرسانی برای همه نمونههای فعال ابزاره،
triggerUpdateAll را در کلاس ابزارهتان فراخوانی کنید:
// Request a content update for all active HelloWidget instances
HelloWidget().triggerUpdateAll(context)
برای بهروزرسانی نمونه ابزاره خاص بدون بازآوری همه نمونههای فعال،
با شناسه نمونه هدف triggerUpdate را فراخوانی کنید.