پوشیدن واچ‌فیس

برای ساعت‌های هوشمند Wear OS by Google اپلیکیشن بسازید.

توجه: برای نصب واچ فیس‌ها روی دستگاه‌هایی که از قبل سیستم عامل Wear OS 5 یا بالاتر روی آن‌ها نصب شده است و برای همه واچ فیس‌های جدید منتشر شده در گوگل پلی، فرمت واچ فیس مورد نیاز است.

از ژانویه ۲۰۲۶، فرمت واچ فیس برای نصب واچ فیس‌ها روی تمام دستگاه‌های Wear OS الزامی خواهد بود.

برای کسب اطلاعات بیشتر در مورد تغییرات مربوط به کاربران، به این مقاله مرکز راهنما مراجعه کنید.

آخرین به‌روزرسانی انتشار پایدار کاندیدای انتشار انتشار بتا انتشار آلفا
۱۷ دسامبر ۲۰۲۵ ۱.۲.۱ - ۱.۳.۰-بتا۰۱ -

اعلام وابستگی‌ها

برای افزودن یک وابستگی به Wear، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Google's Maven را مطالعه کنید.

وابستگی‌های مربوط به مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:

شیار

dependencies {
    // Use to implement wear watchfaces
    implementation "androidx.wear.watchface:watchface:1.2.1"

    // Use to implement wear watchface complications
    implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1"
    // (Kotlin-specific extensions)
    implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1"

    // Use to implement a watchface style and complication editor
    implementation "androidx.wear.watchface:watchface-editor:1.2.1"

    // Can use to render complications.
    // This library is optional and watchfaces may have custom implementation for rendering
    // complications.
    implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1"
}

کاتلین

dependencies {
    // Use to implement wear watchfaces
    implementation("androidx.wear.watchface:watchface:1.2.1")

    // Use to implement wear watchface complications
    implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1"
    // (Kotlin-specific extensions)
    implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1"

    // Use to implement a watchface style and complication editor
    implementation("androidx.wear.watchface:watchface-editor:1.2.1")

    // Can use to render complications.
    // This library is optional and watchfaces may have custom implementation for rendering
    // complications.
    implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1"
}
،

شیار

dependencies {
    // Use to implement wear watchfaces
    implementation "androidx.wear.watchface:watchface:1.2.1"

    // Use to implement wear watchface complications
    implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1"
    // (Kotlin-specific extensions)
    implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1"

    // Use to implement a watchface style and complication editor
    implementation "androidx.wear.watchface:watchface-editor:1.2.1"

    // Can use to render complications.
    // This library is optional and watchfaces may have custom implementation for rendering
    // complications.
    implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1"
}

کاتلین

dependencies {
    // Use to implement wear watchfaces
    implementation("androidx.wear.watchface:watchface:1.2.1")

    // Use to implement wear watchface complications
    implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1"
    // (Kotlin-specific extensions)
    implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1"

    // Use to implement a watchface style and complication editor
    implementation("androidx.wear.watchface:watchface-editor:1.2.1")

    // Can use to render complications.
    // This library is optional and watchfaces may have custom implementation for rendering
    // complications.
    implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1"
}

برای اطلاعات بیشتر در مورد وابستگی‌ها، به «افزودن وابستگی‌های ساخت» مراجعه کنید.

بازخورد

بازخورد شما به بهبود Jetpack کمک می‌کند. اگر مشکلات جدیدی کشف کردید یا ایده‌هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد یک کتابخانه جدید، نگاهی به مشکلات موجود در این کتابخانه بیندازید. می‌توانید با کلیک بر روی دکمه ستاره، رأی خود را به یک مشکل موجود اضافه کنید.

ایجاد یک مسئله جدید

برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.

نسخه ۱.۳

نسخه ۱.۳.۰-بتا۰۱

۱۷ دسامبر ۲۰۲۵

androidx.wear.watchface:watchface-*:1.3.0-beta01 منتشر شد. نسخه 1.3.0-beta01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • پشتیبانی از داده‌های پیش‌نمایش ثابت پیچیدگی‌ها اضافه شده است، که در آن یک ارائه‌دهنده پیچیدگی می‌تواند داده‌های پیش‌نمایش ثابت را در مانیفست خود مشخص کند، برای جزئیات بیشتر به androidx.wear.watchface.complications.data.parser.StaticPreviewDataParser مراجعه کنید.
  • کلاس کاربردی ComplicationTextFormatting با پشتیبانی از قالب‌بندی داده‌ها و زمان تا حد امکان مختصر، اضافه شده است که برای پیچیدگی‌هایی که فضا بسیار مهم است، مفید است.

تغییرات API

  • ویژگی Renderer.watchfaceColors که قبلاً آزمایشی بود، اکنون خصوصی است. هنوز دسترسی‌های عمومی برای این ویژگی وجود دارد. ( Ifdf60 , b/409363281 )

رفع اشکالات

  • پروژه‌هایی که با کاتلین ۲.۰ منتشر شده‌اند، برای استفاده به KGP ۲.۰.۰ یا جدیدتر نیاز دارند. ( I48968 , b/407632515 )

نسخه ۱.۳.۰-آلفا۰۷

۲۳ آوریل ۲۰۲۵

androidx.wear.watchface:watchface-*:1.3.0-alpha07 منتشر شد. نسخه 1.3.0-alpha07 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • مدتی است که می‌توان طرحواره UserStyle صفحه ساعت را تعریف کرد، و می‌توان ColorUserStyleSetting در XML تعریف کرد.

تغییرات API

  • پروژه‌هایی که با کاتلین ۲.۰ منتشر شده‌اند، برای استفاده به KGP ۲.۰.۰ یا جدیدتر نیاز دارند. ( IDb6b5 )
  • رابط برنامه‌نویسی کاربردی (API) مربوط به Watch Face Push اضافه شد که به یک اپلیکیشن Wear OS اجازه می‌دهد تا به صورت برنامه‌نویسی‌شده، یک واچ فیس روی ساعت نصب کند.

رفع اشکالات

  • به ارائه‌دهندگان خدمات پیچیده که از نسخه ۱.۳.۰-alpha06 استفاده می‌کنند، توصیه می‌شود که به‌روزرسانی کنند زیرا اشکال از کار افتادن ComplicationDataSourceUpdateRequester در نسخه بعدی WearOS برطرف شده است.

نسخه ۱.۳.۰-alpha06

۲۶ مارس ۲۰۲۵

androidx.wear.watchface:watchface-*:1.3.0-alpha06 منتشر شد. نسخه 1.3.0-alpha06 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • رابط‌های برنامه‌نویسی کاربردی (API) واچ‌فیس‌های Wear (watchface، watchface-client، watchface-client-guava، watchface-complications-rendering، watchface-data، watchface-editor، watchface-editor-guava و watchface-style) به نفع قالب Wear Watchface منسوخ شده‌اند و در نهایت از AndroidX حذف خواهند شد. رابط‌های برنامه‌نویسی کاربردی (API) واچ‌فیس‌های Wear منسوخ نشده‌اند و باقی خواهند ماند. ( Ice960 )
  • رابط‌های برنامه‌نویسی کاربردی (API) پیچیدگی اکنون می‌توانند مستقیماً با WearSDK ارتباط برقرار کنند که به دلیل تعداد کمتر گام‌های IPC، کارآمدتر است.

نسخه ۱.۳.۰-آلفا۰۵

۱۵ ژانویه ۲۰۲۵

androidx.wear.watchface:watchface-*:1.3.0-alpha05 منتشر شد. نسخه 1.3.0-alpha05 شامل این کامیت‌ها است.

ویژگی‌های جدید

واچ‌فیس‌ها معمولاً به کاربر اجازه می‌دهند رنگ‌ها را با استفاده از ListUserStyle انتخاب کند. اگرچه این روش کار می‌کند، اما مستلزم ارسال آیکون‌ها از طریق بلوتوث به ویرایشگر همراه است که ناکارآمد است، بنابراین ما ColorUserStyleSetting معرفی کرده‌ایم که در آن محتوای برنامه لیستی از یک یا چند رنگ برای هر سبک است که فرمت سیمی بسیار فشرده‌تری دارد.

ما یک ویژگی نمایش ساعت‌های OEM اضافه کرده‌ایم که به ارائه‌دهندگان خدمات پیچیده OEM اجازه می‌دهد موارد اضافی را به ComplicationData برای استفاده توسط صفحه‌های ساعت OEM اضافه کنند.

تغییرات API

  • کلاس‌های UserStyleSetting و UserStyleOption اکنون دارای سازنده‌هایی هستند که روش توصیه‌شده برای ساخت آن‌ها است. ( Iacd03 )
  • پشتیبانی از ارسال موارد اضافی در ComplicationData . این قابلیت برای استفاده توسط تولیدکنندگان اصلی تجهیزات (OEM) در نظر گرفته شده است، جایی که آنها هم ارائه دهنده‌ی موارد اضافی و هم صفحه ساعت گیرنده را کنترل می‌کنند. تنظیم یک مورد اضافی نیاز به مجوز ممتاز com.google.android.wearable.permission.COMPLICATION_EXTRAS دارد. ( I4e3b2 )
  • صفحه‌های ساعت معمولاً به کاربر اجازه می‌دهند رنگ‌ها را با استفاده از ListUserStyle انتخاب کند، که برای هر ListOption یک آیکون وجود دارد. از آنجایی که طرحواره‌های UserStyle از طریق بلوتوث ارسال می‌شوند، کوچک نگه داشتن اندازه طرحواره بسیار مهم است، چرا که اگر به دلیل وجود این همه آیکون، ده‌ها گزینه رنگ ارائه شود، می‌تواند مشکل‌ساز شود. برای کمک به این امر، ColorUserStyleSetting اضافه کرده‌ایم که در آن گزینه به جای یک آیکون، لیستی از رنگ‌ها را در بر می‌گیرد که بسیار فشرده‌تر است. ( Ib542e )
  • ColorUserStyleSetting و ColorOption برای استفاده به API 34 نیاز دارند. ( I8771d )

رفع اشکالات

  • این کتابخانه اکنون از حاشیه‌نویسی‌های nullness از نوع JSpecify استفاده می‌کند که از نوع type-use هستند. توسعه‌دهندگان کاتلین باید از آرگومان کامپایلر زیر برای اعمال استفاده صحیح استفاده کنند: -Xjspecify-annotations=strict (این پیش‌فرض است که از نسخه 2.1.0 کامپایلر کاتلین شروع می‌شود). ( Ifd363 , b/326456246 )

نسخه ۱.۳.۰-آلفا۰۴

۱۸ سپتامبر ۲۰۲۴

androidx.wear.watchface:watchface-*:1.3.0-alpha04 منتشر شد. نسخه 1.3.0-alpha04 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • پشتیبانی از بارگذاری تنبل آیکون‌ها در UserStyleSettings و UserStyleOptions اضافه شده است که یک مزیت عملکردی برای بارگذاری واچ فیس‌ها است. ( Iaf43d )
  • گزینه‌ای اضافه شده است که با تغییر پیکربندی سیستم (مثلاً اگر زبان تغییر کند) از طریق Watchface.setUpdateScreenshotOnConfigurationChange ، اسکرین‌شات به‌روزرسانی‌شده گرفته شود. به‌طور پیش‌فرض این تنظیم غیرفعال است. ( I765a1 )

رفع اشکالات

  • حذف دستورالعمل دسترسی به APIهای پلتفرم جدید، زیرا این امر به طور خودکار از طریق مدل‌سازی API هنگام استفاده از R8 با AGP 7.3 یا بالاتر (مثلاً R8 نسخه 3.3) و برای همه نسخه‌ها هنگام استفاده از AGP 8.1 یا بالاتر (مثلاً D8 نسخه 8.1) اتفاق می‌افتد. به مشتریانی که از AGP استفاده نمی‌کنند، توصیه می‌شود به D8 نسخه 8.1 یا بالاتر به‌روزرسانی کنند. برای جزئیات بیشتر به این مقاله مراجعه کنید. ( Ia60e0 ، b/345472586 )

نسخه ۱.۳.۰-آلفا۰۳

۱۷ آوریل ۲۰۲۴

androidx.wear.watchface:watchface-*:1.3.0-alpha03 منتشر شد. نسخه 1.3.0-alpha03 شامل این کامیت‌ها است.

تغییرات API

  • ما EditorSession#setOverrideComplications اضافه کرده‌ایم که به طور موقت ComplicationData مربوط به نمونه watchface زیرین را هنگام ویرایش تنظیم می‌کند. اگر complexها به ندرت تغییر کنند، این روش کارآمدتر از ارسال overrideها از طریق EditorSession#renderWatchFaceToBitmap است. ( I19384 )

رفع اشکالات

  • پیش از این selectComplicationDataForInstant برای هر جدول زمانی toApiComplicationData فراخوانی می‌کرد، به این معنی که تست برابری مرجع === بعدی همیشه با شکست مواجه می‌شد. این بدان معنی بود که پیچیدگی‌ها در هر فریم مجدداً بارگذاری می‌شدند که منجر به تخلیه باتری می‌شد. ( 717406 )

نسخه ۱.۳.۰-آلفا۰۲

۳ آوریل ۲۰۲۴

androidx.wear.watchface:watchface-*:1.3.0-alpha02 منتشر شد. نسخه 1.3.0-alpha02 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • اکنون از تساوی مرجع برای مقایسه best و selectedData استفاده می‌کنیم زیرا عملگر تساوی پرهزینه است. ( 446b00 )

تغییرات API

  • ما یک API پویای بدون نیاز به بازگشت به عقب برای GoalProgressComplicationData اضافه کرده‌ایم. ( c33264 )

نسخه ۱.۳.۰-آلفا۰۱

۷ فوریه ۲۰۲۴

androidx.wear.watchface:watchface-*:1.3.0-alpha01 منتشر شد. نسخه 1.3.0-alpha01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • WatchFaceServices می‌تواند به صورت همزمان مقداردهی اولیه شود و به همین دلیل باید بدون وضعیت (stateless) باشد. برای پشتیبانی از این قابلیت، ما StatefulWatchFaceService اضافه کرده‌ایم که در آن یک مقدار اضافی تعریف شده توسط کاربر که توسط createExtra() ایجاد شده است، به تمام overrideهایی که در طول مقداردهی اولیه فراخوانی می‌شوند، ارسال می‌شود.
  • GlesRenderer2 اکنون یک سربار سازنده دارد که به شما امکان می‌دهد لیستی از ویژگی‌ها را مشخص کنید تا به نوبت با eglChooseConfig امتحان کنید.

تغییرات API

  • StatefulWatchFaceService اکنون از override کردن getComplicationSlotInflationFactory پشتیبانی می‌کند که در آن extra تعریف‌شده توسط کاربر که توسط createExtra() ایجاد شده است، به آن منتقل می‌شود. ( I82d9f )
  • برخی از واچ فیس‌ها نیاز دارند داده‌های کمکی ایجاد شده در طول createUserStyleSchema را با سایر متدهای مقداردهی اولیه به اشتراک بگذارند. از آنجا که جایگزین بهتری وجود نداشت، توسعه‌دهندگان معمولاً WatchFaceServices خود را stateful می‌کردند. این خطرناک است زیرا چندین نمونه می‌توانند به طور همزمان ایجاد شوند که می‌تواند منجر به اشکالات شود. برای حل این مشکل StatefulWatchFaceService و StatefulWatchFaceRuntimeService را معرفی کرده‌ایم که در آنها یک نوع تعریف شده توسط کاربر توسط createExtra() ایجاد می‌شود و به عنوان پارامتر به متدهای مختلف create ارسال می‌شود. ( If8a99 )
  • ما getUserStyleFlavors به InteractiveWatchFaceClient اضافه کرده‌ایم که در درجه اول مورد توجه تولیدکنندگان اصلی تجهیزات (OEM) است. ( I0f5d8 )
  • GlesRenderer2 اکنون دارای یک سربار سازنده است که به شما امکان می‌دهد لیستی از ویژگی‌ها را مشخص کنید تا به نوبت با eglChooseConfig امتحان کنید. به عنوان مثال، این به شما امکان می‌دهد ابتدا یک پیکربندی با ضد لغزش را امتحان کنید و در صورت نیاز به پیکربندی بدون آن برگردید. ( I1ba74 )
  • از اندروید U، پشتیبانی از SystemDataSources.DATA_SOURCE_HEART_RATE به WearOS اضافه خواهد شد. این پیچیدگی فقط از پیچیدگی‌های SHORT_TEXT پشتیبانی می‌کند، اما توصیه می‌شود که ComplicationSlot نیز SMALL_IMAGE بپذیرد زیرا ممکن است تولیدکنندگان اصلی تجهیزات (OEM) به جای مقدار زنده، یک میانبر برای برنامه سلامت خود ارائه دهند. ( I34223 )
  • ما METADATA_KEY_CONFIG_RESTORE_SUPPORTED اضافه کرده‌ایم که از اندروید U به بعد، کنترل می‌کند که هنگام بازیابی سیستم از یک نسخه پشتیبان برای منبع داده پیچیدگی با METADATA_KEY_DATA_SOURCE_CONFIG_ACTION چه اتفاقی می‌افتد. به طور پیش‌فرض، سیستم فرض می‌کند که سرویس منبع داده پیچیدگی از پشتیبان‌گیری از هرگونه داده پیکربندی پشتیبانی می‌کند، اما اگر اینطور نباشد، می‌تواند تنظیم فراداده METADATA_KEY_DATA_SOURCE_CONFIG_ACTION را روی false اضافه کند که اسلات پیچیدگی را به عنوان پیکربندی نشده علامت‌گذاری می‌کند. ( I6c505 )

نسخه ۱.۲

نسخه ۱.۲.۱

۲۴ ژانویه ۲۰۲۴

androidx.wear.watchface:watchface-*:1.2.1 منتشر شد. نسخه ۱.۲.۱ شامل این کامیت‌ها است.

رفع اشکالات

  • مشکل از کار افتادن ساعت هوشمند سامسونگ گلکسی واچ ۴، ۵ و ۶ برطرف شد. ( 43f0b0 )

نسخه ۱.۲.۰

۲۹ نوامبر ۲۰۲۳

androidx.wear.watchface:watchface-*:1.2.0 منتشر شد. نسخه ۱.۲.۰ شامل این کامیت‌ها است.

تغییرات مهم از زمان ۱.۱.۰

  • ما پشتیبانی از برخی از انواع جدید پیچیدگی‌ها را که برای استفاده از اندروید T در دسترس هستند، اضافه کرده‌ایم:
    • GoalProgressComplicationData که مشابه RangedValueComplicationData است، با این تفاوت که برای پیشرفت به سمت هدفی است که در آن min به طور ضمنی صفر است و مقدار مجاز است بزرگتر از targetValue باشد.
    • WeightedElementsComplicationData که شامل آرایه‌ای از عناصر (جفت‌های وزن و رنگ) به همراه متن/عنوان/تصویر اختیاری است. این موارد ممکن است به صورت نمودار دایره‌ای نمایش داده شوند که در آن رنگ‌ها باید با توجه به متن معنادار باشند، زیرا معمولاً در یک complex جایی برای نمایش برچسب‌ها وجود ندارد.
  • ما پشتیبانی از ColorRanges اختیاری را به RangedValueComplicationData اضافه کرده‌ایم. معمولاً پیچیدگی‌ها با رنگ‌های انتخابی صفحه ساعت رندر می‌شوند، اما گاهی اوقات ComplicationDataSource برای تنظیم رنگ‌ها بهتر است، مثلاً وقتی که معنای خاصی دارند. مثلاً از قرمز به آبی برای دما.
  • تقریباً هر نوع ComplicationData اکنون از SmallImages پشتیبانی می‌کند.
  • ما ComplicationDisplayPolicy اضافه کرده‌ایم که در آن DO_NOT_SHOW_WHEN_DEVICE_LOCKED به صفحه ساعت سازگار دستور می‌دهد که هنگام قفل بودن دستگاه، صفحه نمایش پیچیده را نمایش ندهد.
  • از اندروید T، تولیدکنندگان اصلی تجهیزات (OEM) قادر خواهند بود تشخیص دهند که آیا درخواست عارضه از یک واچ فیس در لیست تعریف شده توسط فراداده android.support.wearable.complications.SAFE_WATCH_FACES در مانیفست ارائه دهنده آنها با ComplicationRequest#isForSafeWatchFace . ارائه دهنده برای دریافت هر چیزی غیر از TargetWatchFaceSafety.UNKNOWN` به مجوز com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE نیاز دارد.
  • UserStyleFlavors به ​​یک ویژگی غیر آزمایشی تبدیل شده است.

نسخه ۱.۲.۰-rc01

۱۸ اکتبر ۲۰۲۳

androidx.wear.watchface:watchface-*:1.2.0-rc01 منتشر شد. نسخه 1.2.0-rc01 شامل این کامیت‌ها است.

نسخه ۱.۲.۰-بتا۰۲

۶ سپتامبر ۲۰۲۳

androidx.wear.watchface:watchface-*:1.2.0-beta02 منتشر شد. نسخه 1.2.0-beta02 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • SuspendingComplicationDataSourceService#onDestroy اکنون باز است. لطفاً توجه داشته باشید که پشتیبانی از یک عارضه آب و هوایی پیش‌فرض سیستم حذف شده است.

تغییرات API

  • برگرداندن «نمایش یک منبع داده جدید برای عوارض آب و هوا». ( I6f335 )

نسخه ۱.۲.۰-بتا۰۱

۲۳ آگوست ۲۰۲۳

androidx.wear.watchface:watchface-*:1.2.0-beta01 منتشر شد. نسخه 1.2.0-beta01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • از اندروید T به بعد، WearOS اکنون از یک سیستم آب و هوایی پیش‌فرض پشتیبانی می‌کند.

تغییرات API

  • برای رفع مشکلات، سیستم پیش‌فرض آب و هوا را اضافه کنید. ( Ia0994 )
  • این پچ WatchFaceRuntimeService و WatchFaceControlClient.createWatchFaceRuntimeControlClient را به همراه wrapperهای guava اضافه می‌کند. این موارد پشتیبانی از runtimeهای watch face را اضافه می‌کنند که نوع خاصی از watch face هستند که تعریف خود را از بسته دیگری بارگیری می‌کنند. در حال حاضر WearOS فقط از runtime برای قالب watch face اندروید ( I2799f ) پشتیبانی می‌کند.
  • این پچ در ادامه‌ی aosp/2636578 است که در آن نام int defs را تغییر دادیم تا هر کدی که به WatchFaceType ، CanvasType ، TapType یا ComplicationsSlotBoundsType بستگی دارد، نیازی به تغییر نداشته باشد. ( I4098b )
  • فایل‌های API به‌روزرسانی شدند تا موارد مربوط به عدم سازگاری ( I8e87a ، b/287516207 ) حاشیه‌نویسی شوند.
  • این وصله، ثابت‌های WatchFaceType را در WatchFaceTypes ، ثابت‌های CanvasType را در CanvasTypes ، ثابت‌های TapType را در TapTypes و ثابت‌های ComplicationsSlotBoundsType را در ComplicationsSlotBoundsType افشا می‌کند. ( I3b85a ، b/288750666 )
  • WatchFace.OverlayStyle کاربرد بسیار کمی دارد و توسط تولیدکنندگان اصلی تجهیزات (OEM) به خوبی پشتیبانی نمی‌شود، بنابراین ما قصد داریم ارزش آن را کاهش دهیم و در آینده آن را حذف کنیم. ( I7344a )

نسخه ۱.۲.۰-آلفا۰۹

۲۱ ژوئن ۲۰۲۳

androidx.wear.watchface:watchface-*:1.2.0-alpha09 منتشر شد. نسخه 1.2.0-alpha09 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • RangedValueComplicationData.Builder اکنون DynamicFloat را می‌پذیرد و یک DynamicComplicationText جدید به عنوان زیرکلاس ComplicationText در دسترس است که هر دو می‌توانند از عبارات پویا و همچنین اتصالات پلتفرم که در دستگاه‌های Wear 4 پشتیبانی‌شده با سرعت ۱ هرتز به‌روزرسانی می‌شوند، استفاده کنند.

تغییرات API

  • انواع پویا برای مسافت روزانه، کالری روزانه و کف روزانه اضافه شد. کلیدهای منابع سلامت پلتفرم اکنون تحت PlatformHealthSources.Keys ( Ib7637 ) قرار دارند.
  • پیاده‌سازی PlatformDataProvider برای ارائه ضربان قلب و تعداد قدم‌های روزانه. رابط SensorGateway از API عمومی حذف شده است. ( I55b84 )
  • نام StateEntryValue را به DynamicDataValue تغییر دهید و APIهای state را برای استفاده از DynamicDataKey به‌روزرسانی کنید. ( If1c01 )
  • برای دسترسی به وضعیت ارسال شده برنامه AppDataKey اضافه کنید؛ برای دسترسی به داده‌های پلتفرم، PlatformDataKey را اضافه کنید؛ پشتیبانی از فضای نام را در StateStore اضافه کنید. ( I7985e )
  • متدهای enable / disablePlatformSource از DynamicTypeEvaluator حذف شده‌اند. فراخوانی‌کننده باید مسئول به‌روزرسانی‌ها باشد. ( I78c6d )
  • امکان محدود کردن اندازه انواع داده محدود شده. ( Ie2966 )

نسخه ۱.۲.۰-آلفا۰۸

۱۹ آوریل ۲۰۲۳

androidx.wear.watchface:watchface-*:1.2.0-alpha08 منتشر شد. نسخه 1.2.0-alpha08 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • از اندروید T، ارائه‌دهندگان خدمات عارضه‌یابی با مجوز ممتاز com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE می‌توانند فراداده androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES را ثبت کنند که برای واچ‌فیس‌های ایمن، بر android.support.wearable.complications.SUPPORTED_TYPES غلبه می‌کند. این بدان معناست که یک ارائه‌دهنده خدمات عارضه‌یابی می‌تواند انواع مختلفی را برای واچ‌فیس‌های قابل اعتماد در مقابل غیر قابل اعتماد ارائه دهد.

تغییرات API

  • انتشار کلاس @Deprecated به ویژگی ( I882d1 ، b/271441831 )
  • نام پارامتر مقدار برای Enum.valueOf تغییر کرد ( Ia9b89 )
  • خطاهای پرتاب‌شده‌ی بیشتر از enum valueOf ( I818fe )
  • ما renderWatchFaceToSurface حذف کرده‌ایم و createRemoteWatchFaceView جایگزین کرده‌ایم که بر روی SurfaceControlViewHost ساخته شده است و به فراخواننده اجازه می‌دهد تا یک نما از صفحه ساعت را جاسازی کند، که وقتی کلاینت RemoteWatchFaceViewHost#renderWatchFace فراخوانی می‌کند، رندر می‌شود. ( Ib311d )
  • ما renderWatchFaceToSurface به InteractiveWatchFaceClient ، HeadlessWatchFaceClient و EditorSession اضافه کرده‌ایم. معمولاً این روش نسبت به رندر کردن به صورت بیت‌مپ، عملکرد بهتری خواهد داشت. ( Ieacad )
  • نام ObservableStateStore به StateStore تغییر یافته است. ( Ieb0e2 )
  • به جای آرگومان‌های سازنده، DynamicTypeEvaluator.Builder اضافه شد تا آرگومان‌های اختیاری بیشتری از جمله ObservableStateStore که اکنون به طور پیش‌فرض یک فروشگاه خالی است، مجاز باشند. ( I6f832 )
  • ترتیب پارامترها در DynamicTypeEvaluator بازسازی شده است. ( Ic1ba4 )
  • Executor به متدهای DynamicTypeEvaluator.bind اضافه شده است. ( I346ab )
  • ما متد startEvaluation به BoundDynamicType اضافه کرده‌ایم تا ارزیابی را پس از اتصال نوع پویا آغاز کند. ( I19908 )
  • ارائه‌دهندگان خدمات پیچیده‌سازی با مجوز com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE می‌توانند فراداده androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES را ثبت کنند که برای صفحه‌های ساعت ایمن، فراداده android.support.wearable.complications.SUPPORTED_TYPES را لغو می‌کند. ( Id1c73 )
  • ما نام CustomValueUserStyleSettings2 به LargeCustomValueUserStyleSettings تغییر داده‌ایم. ( Ic17ac )

رفع اشکالات

  • DynamicTypeValueReceiver#onPreUpdate حذف شده است. ( I2dc35 )

نسخه ۱.۲.۰-آلفا۰۷

۲۲ فوریه ۲۰۲۳

androidx.wear.watchface:watchface-*:1.2.0-alpha07 منتشر شد. نسخه 1.2.0-alpha07 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • از اندروید T، تولیدکنندگان اصلی تجهیزات (OEM) قادر خواهند بود تشخیص دهند که آیا درخواست عارضه از یک واچ فیس در لیست تعریف شده توسط فراداده android.support.wearable.complications.SAFE_WATCH_FACES در مانیفست ارائه دهنده آنها با ComplicationRequest#isForSafeWatchFace . ارائه دهنده برای دریافت هر چیزی غیر از TargetWatchFaceSafety.UNKNOWN به مجوز com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE نیاز دارد.

  • همچنین از اندروید T، CustomValueUserStyleSetting2 برای استفاده در دسترس است که می‌تواند تا ۱۲.۵ کیلوبایت داده را در خود جای دهد. محدودیت قبلی برای CustomValueUserStyleSetting ، ۱ کیلوبایت بود. با وجود افزایش محدودیت اندازه، به توسعه‌دهندگان واچ‌فیس‌ها توصیه می‌شود که داده‌ها را کوچک نگه دارند زیرا تنظیمات هنگام ویرایش از طریق بلوتوث ارسال می‌شوند و پهنای باند بلوتوث محدود است.

تغییرات API

  • ما یک پارامتر اختیاری eglContextAttribList به GlesRenderer و GlesRenderer2 اضافه کرده‌ایم که به شما امکان می‌دهد EGL14.EGL_CONTEXT_CLIENT_VERSION ارسال شده به EGL14.eglCreateContext را تنظیم کنید. ( I2a83e )
  • ما کتابخانه‌های صفحه ساعت را به جای java.util.function.Consumer به androidx.core.util.Consumer منتقل کرده‌ایم ( I273f5 ).
  • استثنائات پرتاب‌شده بیشتر از accessors property KT ( Iff9d9 )
  • ما InteractiveWatchFaceClient.isComplicationDisplayPolicySupported را اضافه کرده‌ایم تا کلاینت بتواند تعیین کند که آیا باید از طرف واچ‌فیس‌های قدیمی پشتیبانی را شبیه‌سازی کند یا خیر. ( I24c89 )
  • ما تصمیم گرفتیم که isForSafeWatchFace باید یک IntDef سه حالته باشد. ( Ief2f7 )
  • برای اندروید T، ما ComplicationRequest.isForSafeWatchFace معرفی کرده‌ایم که برای استفاده OEM در نظر گرفته شده است و به com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE نیاز دارد. برای منابع داده در تصویر سیستم، اگر صفحه ساعت درخواستی در لیست صفحه ساعت‌های ساعت ایمن مشخص شده توسط منبع داده در مانیفست آن باشد، این دستور مقدار true را برمی‌گرداند. ( I0cbb6 )
  • برای اندروید T، CustomValueUserStyleSetting2 را اضافه کرده‌ایم که می‌تواند تا ۱۲.۵ کیلوبایت را در خود جای دهد. محدودیت قبلی برای CustomValueUserStyleSetting ۱ کیلوبایت بود. ( I0b100 )

نسخه ۱.۲.۰-alpha06

۲۵ ژانویه ۲۰۲۳

androidx.wear.watchface:watchface-*:1.2.0-alpha06 منتشر شد. نسخه 1.2.0-alpha06 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • کار برای افزودن پشتیبانی از اتصال‌های پلتفرم پیچیدگی در حال انجام است، این هنوز آماده استفاده نیست، اما منتظر بمانید!
  • ما پشتیبانی از XML ComplicationSlot را برای انواع جدید Complexity، GOAL_PROGRESS و WEIGHTED_ELEMENTS، اضافه کرده‌ایم.

رفع اشکالات

  • رفع مشکل نشت اطلاعات که باعث می‌شد ویرایشگر صفحه ساعت به درستی روی دستگاه‌های سامسونگ منتشر نشود. ( 3b5987 )
  • رفع اشکالی که باعث می‌شد گاهی اوقات هنگام جابجایی بین یک صفحه ساعت با چندین مورد دلخواه، پیچیدگی‌ها به درستی نمایش داده نشوند. ( b38ece )
  • رفع اشکال سریال‌سازی با perOptionScreenReaderNames که منجر به از کار افتادن صفحه ساعت می‌شد. ( e9f466 )

نسخه ۱.۲.۰-آلفا۰۵

۷ دسامبر ۲۰۲۲

androidx.wear.watchface:watchface-*:1.2.0-alpha05 منتشر شد. نسخه 1.2.0-alpha05 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • مدتی پیش، پشتیبانی از تنظیمات سبک کاربر UserStyleSettings سلسله مراتبی را اضافه کردیم و از اندروید T اکنون می‌توان بیش از یک ComplicationSlotsUserStyleSetting در یک سلسله مراتب داشت. فقط یک ComplicationSlotsUserStyleSetting فعال خواهد بود که بستگی به انتخاب‌های سبک کاربر دارد.

  • ما با اضافه کردن فیلد screenReaderName در حال بهبود پشتیبانی از صفحه‌خوان برای ListOption و ComplicationSlotsOption هستیم، توجه داشته باشید که قبل از اندروید T، این فیلد توسط ویرایشگرهای همراه نادیده گرفته می‌شد.

تغییرات API

  • ما یک فیلد اختیاری جدید screenReaderName به ListOption و ComplicationSlotsOption برای استفاده توسط ویرایشگرها اضافه کرده‌ایم - توسط ویرایشگرهای همراه در دستگاه‌های قبل از اندروید T. ( I75326 ) نادیده گرفته خواهد شد.
  • از اندروید T، تنظیمات چندگانه ComplicationSlotsUserStyleSettings اکنون در یک سلسله مراتب سبک پشتیبانی می‌شوند، مادامی که حداکثر فقط یکی از آنها بتواند در هر زمان فعال باشد. ما یک تابع کاربردی findComplicationSlotsOptionForUserStyle به UserStyleSchema اضافه کرده‌ایم تا در صورت وجود، به یافتن ComplicationSlotsOption فعال کمک کند. ( Ic2b06 )
  • RangedValuesTypes به شیء همراه RangedValueComplicationData منتقل شده و به TYPE_UNDEFINED تغییر نام داده شده است، TYPE_RATING و یک TYPE_PERCENTAGE جدید اضافه شده است. ( I55d02 )
  • ما DynamicFloat آزمایشی را به FloatExpression تغییر نام داده و آن را با @hide علامت‌گذاری کرده‌ایم ( Idf4f1 ).
  • اضافه کردن حاشیه‌نویسی @JvmDefaultWithCompatibility ( I8f206 )

نسخه ۱.۲.۰-آلفا۰۴

۹ نوامبر ۲۰۲۲

androidx.wear.watchface:watchface-*:1.2.0-alpha04 منتشر شد. نسخه 1.2.0-alpha04 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • برای اندروید T، پشتیبانی از دو نوع پیچیدگی جدید، GoalProgressComplicationData و WeightedElementsComplicationData ، اضافه شده است.
  • GoalProgressComplicationData مشابه RangedValueComplicationData است، اما مقدار آن می‌تواند از هدف فراتر رود (برای RangedValueComplicationData مقدار در محدوده [min .. max] محدود می‌شود) که پیامدهایی برای طراحی بصری دارد که ممکن است برای همه صفحه‌های ساعت مناسب نباشد.
  • GoalProgressComplicationData از نمودارهای دایره‌ای و تجزیه و تحلیل‌های مشابه داده‌های ساده پشتیبانی می‌کند.
  • ما پشتیبانی اختیاری برای ColorRamps به RangedValueComplicationData اضافه کرده‌ایم.
  • برای اندروید T، ما ComplicationPersistencePolicy و setCachePolicy به ComplicationData اضافه کرده‌ایم که در حال حاضر به ارائه‌دهنده اجازه می‌دهد تا کنترل کند که آیا یک Complexity پایدار است یا خیر (یعنی آیا پس از راه‌اندازی مجدد در حافظه پنهان ذخیره می‌شود یا خیر). اکثر Complexityها نیازی به تنظیم کنترل حافظه پنهان ندارند، اما انجام این کار می‌تواند موارد گوشه‌ای با داده‌های قدیمی را برای برخی از Complexityهایی که مرتباً به‌روزرسانی می‌شوند (مانند Complexityهای داده‌های سلامت) برطرف کند. ما همچنین ComplicationDisplayPolicy اضافه کرده‌ایم که در آن DO_NOT_SHOW_WHEN_DEVICE_LOCKED به یک صفحه ساعت سازگار دستور می‌دهد که Complexity را هنگام قفل بودن دستگاه نمایش ندهد. ( Ic9574 )

تغییرات API

  • GoalProgressComplicationData ، WeightedElementsComplicationData و ColorRamp دیگر آزمایشی نیستند. ( Ica9e2 )
  • ComplicationPersistencePolicy و ComplicationDisplayPolicy اکنون به درستی به عنوان API های T علامت گذاری شده اند. ( I31d88 )
  • سازنده‌ی منسوخ‌شده‌ی ComplicationSlotOverlay اکنون دارای DeprecationLevel.WARNING است که به آن اجازه می‌دهد دوباره از جاوا فراخوانی شود. ( Ib308c )
  • ما برخی از مشکلات مربوط به سازگاری جاوا با ComplicationRequestListener ، CanvasComplication ، ComplicationTapFilter و InteractiveWatchFaceClient را با حاشیه‌نویسی آنها با @JvmDefaultWithCompatibility ( Id94fc ) برطرف کرده‌ایم.
  • ما ProtoLayoutComplicationData و ListComplicationData آزمایشی را حذف کرده‌ایم. دلیل توسعه‌دهنده برای این موارد مشخص نبود، امیدواریم در آینده دوباره به آنها بپردازیم. ( I9df05 )
  • ما یک ValueType به RangedValueComplicationData اضافه کرده‌ایم. WeightedElementsComplicationData اکنون از رنگ پس‌زمینه پشتیبانی می‌کند. DiscreteRangedValueComplicationData حذف کرده‌ایم زیرا عملکرد آن زیرمجموعه‌ای از WeightedElementsComplicationData است. ( I6446c )

رفع اشکالات

  • isForScreenShot در کد تساوی و هش قرار دهید. مطمئن شوید که onRenderParametersChanged مقدار صحیح isForScreenshot دریافت می‌کند ( I04a41 ).
  • نشت اطلاعات WatchFaceControlService از کلاینت‌های بدون سر ( e90e00 ) برطرف شد.

نسخه ۱.۲.۰-آلفا۰۳

۵ اکتبر ۲۰۲۲

androidx.wear.watchface:watchface-*:1.2.0-alpha03 منتشر شد. نسخه 1.2.0-alpha03 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • ویژگی جدیدی اضافه نشده، اما چند اشکال در ویرایشگر صفحه ساعت را برطرف کرده‌ایم.

تغییرات API

  • UserStyleSchema.userStyleSettings منسوخ شده به عنوان rootUserStyleSettings غیر آزمایشی می‌شود ( Ie96e3 )
  • rootUserStyleSettings از حالت آزمایشی ( I8d6b3 ) خارج کنید.
  • ما WatchFaceColors به عنوان آزمایشی علامت گذاری کرده‌ایم زیرا توسط همه سیستم‌ها پشتیبانی نمی‌شود ( I6d75d )
  • DisconnectReasons در API عمومی قرار دهید تا با IntDef کار کند. ( I791f8 )

رفع اشکالات

  • اگر SysUI از کار افتاد، هرگونه ویرایشگر ساعت را که باز است ببندید. اگر SysUI از کار بیفتد و ویرایشگر صفحه ساعت بسته نشود، صفحه ساعت می‌تواند در حالت ناپایدار باقی بماند زیرا سیستم برای حفظ هرگونه تغییر در سبک کاربر به SysUI متکی است. ( ba762a
  • رفع نشت حافظه در ComplicationDataSourceInfoRetriever ، که در آن یک Coroutine continue کاتلین به عنوان ریشه gc عمل می‌کرد و فعالیت ویرایشگر را حفظ می‌کرد. ( 33ee06 )

نسخه ۱.۲.۰-آلفا۰۲

۲۱ سپتامبر ۲۰۲۲

androidx.wear.watchface:watchface-*:1.2.0-alpha02 منتشر شد. نسخه 1.2.0-alpha02 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • برخی از صفحه‌های ساعت دارای پیکربندی‌هایی خارج از UserStyle هستند که از نظر بصری بر آن تأثیر می‌گذارند (مثلاً انتخاب عکس پس‌زمینه). ما Renderer.sendPreviewImageNeedsUpdateRequest را اضافه کرده‌ایم که به صفحه ساعت اجازه می‌دهد تصویر پیش‌نمایش به‌روزرسانی‌شده را درخواست کند. توجه داشته باشید که این کار برای کار کردن به به‌روزرسانی سیستم مربوطه نیاز دارد.

  • ما همچنین یک API برای صفحه‌های ساعت اضافه کرده‌ایم تا رنگ‌هایشان را در معرض سیستم قرار دهند که ممکن است بر اساس آن، پالت رنگ خود را انتخاب کند. توجه داشته باشید که این مورد در یک پچ بعدی به صورت آزمایشی انجام شده است.

  • تقریباً هر نوع ComplicationData اکنون از SmallImages پشتیبانی می‌کند.

تغییرات API

  • مدیر تصویر زمینه گاهی اوقات می‌تواند از یک موتور جدا شود و موتور دیگری بسازد. ما یک DisconnectReason از نوع int def اضافه کرده‌ایم و ClientDisconnectListener با یک متد جدید که شامل DisconnectReason است، توسعه داده‌ایم که به شنونده اجازه می‌دهد جدا شدن موتور را مشاهده کند. ( I45cce )
  • دو پارامتر اختیاری nameResourceId و screenReaderResourceId به سازنده ComplicationSlotOverlay ( I157e8 ) اضافه شد.
  • ما یک پوشش guava برای overload جدید getOrCreateInteractiveWatchFaceClient با یک PreviewImageUpdateRequestedListener ( Ic31f0 ) اضافه کرده‌ایم.
  • ما Renderer.sendPreviewImageNeedsUpdateRequest اضافه کرده‌ایم که برای واچ‌فیس‌هایی که حالتی خارج از UserStyleSchema دارند و بر نحوه نمایش آنها تأثیر می‌گذارند (مثلاً واچ‌فیسی با تصویر پس‌زمینه قابل انتخاب) مفید است. در سمت کلاینت PreviewImageUpdateRequestedListener به عنوان یک پارامتر اختیاری به getOrCreateInteractiveWatchFaceClient اضافه کرده‌ایم تا این درخواست‌ها را مشاهده کند. ( Iff44a )
  • ما API مربوط به نمایش WatchFaceColors ساده کرده‌ایم، اکنون یک ویژگی ساده به نام watchFaceColors در رندرر وجود دارد که صفحه ساعت می‌تواند آن را تنظیم کند، این ویژگی باید در صورت لزوم در پاسخ به هرگونه تغییر سبک به‌روزرسانی شود. به جای استفاده از WallpaperManager برای مشاهده تغییرات رنگ، OnWatchFaceColorsListener به InteractiveWatchFaceClient اضافه کرده‌ایم. ( I490bc )
  • ما یک کلاس WatchFaceColors اضافه کرده‌ایم که سه رنگ برجسته صفحه ساعت را در خود جای داده و متدهای باز watchfaceColors و notifyWatchFaceColorsChanged را به Renderer اضافه کرده‌ایم که به سیستم اجازه می‌دهند رنگ‌های صفحه ساعت را از طریق WallpaperManager.getWallpaperColors ( I3d611 ) دریافت کند.
  • ShortTextComplicationData ، RangedValueComplicationData ، NoPermissionComplicationDataDiscreteRangedValueComplicationData ، GoalProgressComplicationData و WeightedElementsComplicationData آزمایشی) اکنون همگی SmallImages پشتیبانی می‌کنند. اگر یک صفحه ساعت تصمیم بگیرد یک تصویر پیچیده را با چندین رنگ رندر کند، اکنون این گزینه را دارد که از یک SmallImage چند رنگ استفاده کند، در حالی که قبلاً مجبور بود از یک تصویر تک رنگ استفاده کند. ( I257df )
  • Refactor PreviewImageUpdateRequestedListener به یک Consumer<> به جای آن ( Ia875d )
  • نوع OnWatchfaceColorsListener متد انتزاعی تکی (SAM) سفارشی را با نوع عمومی SAM جاوا (مصرف‌کننده) ( I0c489 ) جایگزین کنید.
  • ما متدهای قدیمی getOrCreateInteractiveWatchFaceClient و listenableGetOrCreateInteractiveWatchFaceClient را که PreviewImageUpdateRequestedListener را مشخص نمی‌کنند، منسوخ کرده‌ایم ( Iec502 ).

رفع اشکالات

  • DisconnectReason.BINDER_DIED به DisconnectReason.ENGINE_DIED تغییر نام داده است. ( I4eb0e )

نسخه ۱.۲.۰-آلفا۰۱

۱۰ آگوست ۲۰۲۲

androidx.wear.watchface:watchface-*:1.2.0-alpha01 منتشر شد. نسخه 1.2.0-alpha01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • ما پشتیبانی آزمایشی برای فرمت‌های مختلف Complexity جدید اضافه کرده‌ایم. این حوزه در حال توسعه فعال است؛ این فرمت‌های جدید بدون اطلاع قبلی قابل تغییر هستند و در حال حاضر هیچ پشتیبانی رندرکننده‌ای از CanvasComplicationDrawable وجود ندارد.
  • ما همچنین حاشیه‌های اختیاری به اسلات‌های پیچیدگی‌ها اضافه کرده‌ایم که لمس کردن پیچیدگی‌های کوچک را آسان‌تر می‌کند.

تغییرات API

  • کلاس آزمایشی BoundingArc اکنون تغییرناپذیر است. ( If624a )
  • لمس کردن پیچیدگی‌های کوچک می‌تواند دشوار باشد. برای کمک به کاهش این مشکل، ما پشتیبانی از حاشیه‌هایی را معرفی کرده‌ایم که ناحیه قابل لمس را بدون تأثیر بر رندر افزایش می‌دهند. مگر اینکه مشخص شده باشد (چه در کد و چه از طریق XML)، ComplciationSlots حاشیه‌هایی با اندازه صفر دارند. ( I14089 )
  • امضای getComplicationSlotInflationFactory(CurrentUserStyleRepository) برای برگرداندن یک نمونه کارخانه غیر تهی تغییر کرد. قبلاً برگرداندن تهی یک خطا بود، بنابراین این فقط قرارداد API را واضح‌تر می‌کند. ( I0fcc0 )
  • ما آرگومان currentUserStyleRepository را به متد WatchFaceService.getComplicationSlotInflationFactory اضافه کرده‌ایم تا با createComplicationSlotsManager ( I2ddd2 ) سازگار باشد.
  • UserStyleFlavors به ​​یک ویژگی غیر آزمایشی تبدیل شده‌اند. ( I69cdc )
  • ما ValueType آزمایشی را از RangedValueComplicationData حذف کرده‌ایم و به جای آن DiscreteRangedValueComplicationData آزمایشی را معرفی کرده‌ایم که مانند RangedValueComplicationData است، با این تفاوت که محدوده و مقدار آن عدد صحیح است. ما همچنین GoalProgressComplicationData آزمایشی را معرفی کرده‌ایم که مشابه RangedValueComplicationData است، با این تفاوت که برای پیشرفت به سمت یک هدف است که در آن min به طور ضمنی صفر است و مقدار مجاز است بزرگتر از targetValue باشد. توجه داشته باشید که برای همه انواع RangedValue حداقل یکی از monochromeImage، text یا title باید مشخص شود. ( I9590c )
  • ما boundsWithMargins از ComplicationSlotState حذف کردیم زیرا نرم‌افزار سیستمی موردی برای استفاده از آن ندارد. ( I42e26 )
  • ما پشتیبانی آزمایشی برای WeightedElementsComplicationData اضافه کرده‌ایم که شامل آرایه‌ای از عناصر (جفت‌های وزن و رنگ) به همراه متن/عنوان/تصویر اختیاری است. این موارد ممکن است به صورت نمودار دایره‌ای نمایش داده شوند که در آن رنگ‌ها باید با توجه به متن معنادار باشند، زیرا معمولاً در یک complexion جایی برای رندر برچسب‌ها وجود ندارد. ( I87eea )
  • ColorRamps آزمایشی که به صورت اختیاری توسط RangedValueComplicationData و GoalProgressComplicationData استفاده می‌شوند، اکنون به شما امکان می‌دهند توالی حداکثر هفت رنگ و یک پرچم را مشخص کنید که بیان می‌کند آیا رنگ‌ها باید به طور یکنواخت Tween شوند یا اینکه گام‌های رنگی با اندازه یکسان رندر شوند. ( I9f5bf )
  • RangedValueComplicationData.drawSegmented به valueType تغییر یافته است که یک عدد صحیح (int) با ValueType IntDef متناظر است که به مقدار محدوده شده معنای معنایی می‌دهد و ممکن است توسط رندرکننده‌ی Complexity برای تأثیرگذاری بر سبک‌بندی استفاده شود. ( I0616b )
  • ما پشتیبانی آزمایشی برای ColorRanges اختیاری را به RangedValueComplicationData اضافه کرده‌ایم. معمولاً پیچیدگی‌ها با رنگ‌های انتخابی صفحه ساعت رندر می‌شوند، اما گاهی اوقات ComplicationDataSource برای تنظیم رنگ‌ها بهتر است، مثلاً وقتی که معنای خاصی دارند. مثلاً از قرمز به آبی برای دما. ( I5153a )
  • ما یک راهنمای آزمایشی drawSegmented به RangedValueComplicationData اضافه کرده‌ایم. این به رندرکننده‌ها علامت می‌دهد که نشانگر مقدار محدوده‌بندی‌شده را با بخش‌هایی رسم کنند، که در آن 1 بخش = 1 واحد است. ( I7d7c1 )

رفع اشکالات

  • ما قابلیت تعریف ComplicationSlotBounds نسبت به یک سیستم مختصات صفحه نمایش از پیش تعریف شده اضافه کرده‌ایم. ( I0985d )

نسخه ۱.۱

نسخه ۱.۱.۱

۱۰ آگوست ۲۰۲۲

androidx.wear.watchface:watchface-*:1.1.1 منتشر شد. نسخه ۱.۱.۱ شامل این کامیت‌ها است.

  • این یک نسخه رفع اشکال است و به کاربران نسخه ۱.۱.۰ اکیداً توصیه می‌شود که آن را ارتقا دهند.

رفع اشکالات

  • Watch face initialization is asynchronous and if a complication is received before the watch face is ready it gets put on the pendingInitialComplications list and is applied later. Unfortunately pendingInitialComplications was applied too soon which meant there was a window of time during watch face initialization where complications would still get put on pendingInitialComplications and be ignored. This has now been fixed. In addition This patch fixes a bug where ComplicationRenderer was wrongly trying to load placeholders asynchronously, which failed leading to the compilation graphic never updating. Finally this patch fixes a hopefully theoretical bug where multiple pendingInitialComplications need to be merged. ( 0d03ba3 )

  • Fix potential deadlock in InteractiveInstanceManager where getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance was holding the lock longer than necessary. Usually we'd expect engine.setUserStyle to be quick but if for some reason it's not then we could end up with a deadlock/ANR. This patch moves unnecessary work out of the lock, removing the potential for a deadlock.( 5a2adca )

  • Fix several issues that retained WatchFaceService . The WakeLock can sometimes retain the WatchFaceService , adding a release() call fixes this. Also the StateFlows can retain WatchFaceService , canceling the underlying CoroutineScopes fixes that.( fd48138 )

  • Add timeouts to awaitDeferredWatchFace * and fix watchfaceOverlayStyle NullPointerException . In normal circumstances this shouldn't timeout including after fresh install and DirectBoot scenarios where the CPU load is high. We've also fixed a NPE if getWatchfaceOverlayStyle is called after close() .( a4c3a5a )

نسخه ۱.۱.۰

۱۵ ژوئن ۲۰۲۲

androidx.wear.watchface:watchface-*:1.1.0 is released. Version 1.1.0 contains these commits.

Important changes since 1.0.0

Improved Editing:

  • We added support for hierarchical schemas, which allows a hierarchy of styles to be scribed by editor UIs. You can now specify separate icons for use by on watch face and companion editors.
  • There is opt-in support for multiple instances of a watch face, each instance has a unique ID available across all API surfaces.
  • You can now specify human readable names for ComplicationSlots for use in editors.
  • Experimental support for styling “flavors”, a curated selection of styles which will be visible from the companion editor.
  • When editing two instances of the watchface are loaded, it's now possible for watchface instances to share resources, saving memory
  • When picking a complication in the on watch face editor, the current provider is now preselected.

Improved Complications:

  • You can now specify the ComplicationType for the primary and secondary data sources, giving developers more flexibility for the out of box experience.
  • We added ComplicationDataTimeline which provides a sequence of time-gated data to be delivered to the watch face which can be cached and updated automatically. For example, today's weather forecast at various times or multiple upcoming calendar events.
  • The ComponentName of the complication provider is part of the ComplicationData .
  • Complications are now cached which provides a better experience when switching between watch faces.

Other changes:

  • The UserStyleSchema and ComplicationSlots can now be defined in XML. This simplifies watch face construction and allows for faster metadata queries from the system.
  • Watch faces can now influence the colors used for rendering the system overlay.

Version 1.1.0-rc01

۱۸ مه ۲۰۲۲

androidx.wear.watchface:watchface-*:1.1.0-rc01 is released. Version 1.1.0-rc01 contains these commits.

ویژگی‌های جدید

  • We've made some usability tweaks to watchface XML support, making it easier to specify ComplicationSlotBounds and supporting references. Experimentation with edge complication BoundingArc continues, plumbing it through to drawHighlight although it's not recommended for use at that time.

تغییرات API

  • We've added an experimental overload of drawHighlight which accepts a BoundingArc parameter. ( I705f8 )
  • Watch face XML now supports resource references. It lets you use the same constants both in XML and your code. ( I3ef61 )
  • We've added the ability to define ComplicationSlotBounds in center_x , center_y , size_x , size_y form. Now it is also possible to use different units (ie dp) using resource references. ( Iace98 )

رفع اشکالات

  • Fix runBlockingWithTracing which was running tasks on the wrong context.( 4f595fe )
  • Make BaseEditorSession.close synchronous. The problem with BaseEditorSession.close being asynchronous is that we release the ComplicationDataSourceInfoRetriever too late leading to warning spam in logcat. This was probably harmless but logcat spam is distracting and should be avoided.( 35a5308 )

Version 1.1.0-beta02

۱۱ مه ۲۰۲۲

androidx.wear.watchface:watchface-*:1.1.0-beta02 is released. Version 1.1.0-beta02 contains these commits.

ویژگی‌های جدید

  • We've added experimental support for new ComplicationData types, these are not yet ready for use but watch this space.

تغییرات API

  • We've added BoundingArc , an experimental class that describes the geometry of an edge complication slot. This has been added to ComplicationSlot and plumbed through to ComplicationSlotState and WatchFaceMetadataClient . ( I61a40 )
  • We've added the ability to inherit settings in UserStyleSetting XML. It lets you reduce verbosity and share a setting between watchfaces. ( Ief841 )
  • We have added two new experimental types of ComplicationData : ListComplicationData & ProtoLayoutComplicationData . Currently there's no rendering support for either of these types and WearOS doesn't currently recognize these types if added to a ComplicationDataSource's manifest. ( I1811c )

رفع اشکالات

  • Fix serialization of TimeLineEntry type. We were not serializing the TimeLineEntry type which meant cached TimeLineEntries of type NoData would be incorrectly interpreted as having the parent complication's type leading to NPEs when non-existent required fields were accessed. ( 55ffdf5 )
  • Fix a bug where setComplicationData dropped timeline fields( fb392f5 )
  • Fixes a bug where very occasionally runBlockingWithTracing would lead to an NPE( 12ca62e )
  • Fixes a bug where we sometimes get ClassNotFoundException: android.support.wearable.complications.ComplicationText when receiving a complication.( 217942d9 )
  • Fixes a bug in GlesRenderer.backgroundThreadInitInternal where it was only calling onBackgroundThreadGlContextCreated if EGL14.eglCreateContext was called. Fixes another bug where there was a visual glitch in the screenshot caused by verticalFlip .( c674ad2 )
  • Fix WatchFaceService XML version check, it was loading from the wrong package.( dfa06f3 )
  • Placeholder wire format now uses an inner bundle. We don't want placeholders to break existing watchfaces which might use the hidden inner aswcComplicationData. Previously the wire format of a NoDataComplication data stored the placeholder in the usual fields (problematic because old watch faces would render the placeholder string which isn't intended), instead we now use an inner bundle to fully isolate this.( d5e7bd2 )

Version 1.1.0-beta01

۲۰ آوریل ۲۰۲۲

androidx.wear.watchface:watchface-*:1.1.0-beta01 is released. Version 1.1.0-beta01 contains these commits.

تغییرات API

  • Now WatchFaceMetadataClient methods ( getUserStyleSchema , getComplicationSlotMetadataMap , getUserStyleFlavors ) and HeadlessWatchFaceClient.getUserStyleFlavors throw unchecked RuntimeException instead of WatchFaceException . ( I0718a )
  • WatchFaceMetadataClient.WatchFaceException has been moved out of the class to allow it to be reused. ( I4e869 )

رفع اشکالات

  • WatchFaceMetadataClient will no longer crash when sent partial ComplicationSlotBounds .( Iaafd )

Version 1.1.0-alpha05

۶ آوریل ۲۰۲۲

androidx.wear.watchface:watchface-*:1.1.0-alpha05 is released. Version 1.1.0-alpha05 contains these commits.

ویژگی‌های جدید

  • You can now tell which data source sent a ComplicationData by inspecting ComplicationData.dataSource , some watch faces may use this to customize complication display. ( I44a73 )

تغییرات API

  • Renderer.CanvasRenderer and Renderer.GlesRenderer have been deprecated in favor of Renderer.CanvasRenderer2 and Renderer.GlesRenderer2 which support SharedAssets which are passed to the render methods. For java interop we've introduced ListenableCanvasRenderer2 and ListenableGlesRenderer2 . ( I31ffa )
  • Added @WatchFaceFlavorsExperimental ability to define flavors - preconfigured list of styled watchfaces ( I04dd0 )
  • Renderer.sharedAssets is now a StateFlow and we've removed the unused Renderer.SharedAssetsFactory ( I12ac5 )
  • UserStyleSchema.userStyleSettings is not deprecated anymore ( Iba7e3 )
  • We've added HeadlessWatchFaceClient.getUserStyleSchemaDigestHash which allows a HeadlessWatchFaceClient to avoid the relatively low overhead of passing the schema over AIDL before computing the digest hash. ( I33597 )
  • We've added isUserStyleSchemaStatic to WatchFaceMetadataClient which is true if and only if the UserStyleSchema can be relied on not to change unless the watch face APK is updated. ( I45a3f )
  • We have added getDigestHash to UserStyleSchema which computes a digest hash of the schema. This can be used to efficiently determine if the UserStyleSchema has changed. ( I2063d )
  • METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED renamed to METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED ( I9ba5d )
  • UserStyleSetting.OnWatchEditorData has been renamed to UserStyleSetting.WatchFaceEditorData , it contains data that's used purely by the on watch face editor. ( If3afb )

Version 1.1.0-alpha04

۹ مارس ۲۰۲۲

androidx.wear.watchface:watchface-*:1.1.0-alpha04 is released. Version 1.1.0-alpha04 contains these commits.

تغییرات API

  • Up to date ComplicationData may not always be available (eg expired cached ComplicationData) so we've extended NoDataComplication with an optional placeholder ComplicationData and added ComplicationText.PLACEHOLDER , MonochromaticImage.PLACEHOLDER , SmallImage.PLACEHOLDER , PhotoImage.PLACEHOLDER which are only allowed to be used inside the context of a NoDataComplicationData placeholder. If selected these placeholders are suggested to be rendered with gray boxes/arcs. ( I6285d )
  • We've added ComplicationData.getNextChangeInstant which tells you the next Instant after the reference Instant at which any field of the complication may change. This is used internally to schedule frames for complication updates. Eg if a watch face normally updates once per minute, setting the stop watch complication will cause it to update once per second. ( I7ceb2 )
  • EditorSession.watchFaceId can now be used on all API levels. In addition its value will now always be consistent with WatchState.watchFaceInstanceId . ( I323b9 )
  • The getPendingIntentForTouchEvent API is no longer necessary since the underlying issue has been fixed in the framework, so all the related APIs have been removed. Watchfaces do not need to do anything special for PendingIntents to fire, even if the home button has recently been pressed. ( I1f2e8 )
  • We've added RendererParameters.isForScreenShot which will be true if the render is for a screen shot. Some watch faces with animations need to know this in order to make adjustments to ensure the best results. ( I96d99 )
  • We've added WatchFaceExceptionReason to WatchFaceException to give some context to what went wrong. ( I01d15 )
  • ComplicationDataSourceService.onImmediateComplicationRequest has been removed, instead ComplicationRequest.immediateResponseRequired has been added to signal that the provider needs to respond quickly (ideally responding in < 100ms). Note this functionality is guarded behind the privileged com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE permission. ( Ie6b23 )
  • Updated nullability in core and appcompat to match Tiramisu DP2 ( I0cbb7 )

رفع اشکالات

  • Now watchface app crashes with an exception if the schema validation fails ( Ia400f )

Version 1.1.0-alpha03

۹ فوریه ۲۰۲۲

androidx.wear.watchface:watchface-*:1.1.0-alpha03 is released. Version 1.1.0-alpha03 contains these commits.

تغییرات API

  • We've added experimental support for hierarchical style schemas. We've added a new property to androidx.wear.watchface.style.UserStyleSetting.Option , childSettings which is initially only used by ListOption . This allows a hierarchy of styles to be described for use by Editor UIs, the underlying UserStyle is unchanged and is still a Map<String, ByteArray> . ( Iaf6f4 )
  • We've added WatchFace.OverlayStyle which allows the watch face to configure the rendering of the system status overlay. ( I8520d )
  • We've introduced clearWithBackgroundTintBeforeRenderingHighlightLayer a new optional constructor parameter for CanvasRenderer (default is false), if set to true then the canvas will be cleared with the background tint color. ( Ie01e5 )
  • Added androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED metadata key which allows complication data sources to indicate they can provide a default value without any configuration ( Icc0d4 )
  • It's common when editing a watch face for there to be both an interactive and a headless instance. To help save memory we've introduced Renderer.SharedAssets which allows a watch face renderer to share immutable data (eg textures and shaders) between instances. GlesRenderer.setEglConfig and GlesRenderer.setEglDisplay are deprecated, it was never intended for these to be settable, and doing so would have led to undefined behavior. ( I0d9e7 )
  • We've added setNameResourceId & setScreenReaderNameResourceId (which reference string resources) to ComplicationSlot.Builder and corresponding getters in androidx.wear.watchface.client.ComplicationSlotState . This allows the system to fetch the names of ComplicationSlots for use in editors and screen readers. ( If6c6a )
  • WatchfaceMetadataClient.getUserStyleSchema and getComplicationSlotMetadataMap now throw WatchFaceException instead of RemoteException . ( I86f11 )
  • onSynchronousComplicationRequest and related functions in ComplicationDataSourceService have been renamed to onImmediateComplicationRequest etc... ( I87ba0 )
  • Watch face editors have much less screen real estate than companion editors, therefore it makes sense to support different icons for on watch face editors. This patch adds OnWatchEditorData (currently containing just an icon) to all UserStyleSettings and where appropriate their Option classes. ( If1886 )
  • We've added @JvmOverloads to ListenableGlesRenderer's constructor for better java interop. ( I2974a )

رفع اشکالات

  • ListenableGlesRenderer 's constructor is now correctly marked as @Throws(GlesException::class) , and it is now possible to extend this class in java. ( Iac6d0 )
  • Fixes bug with PhotoImageComplicationData tapAction not being correctly handled ( I1cc30 )

Version 1.1.0-alpha02

۱۲ ژانویه ۲۰۲۲

androidx.wear.watchface:watchface-*:1.1.0-alpha02 is released. Version 1.1.0-alpha02 contains these commits.

ویژگی‌های جدید

  • To aid debugging and testing, ComplicationData and related subclasses now have overridden hashcode, equals and toString methods making them easier to work with.

تغییرات API

  • WatchfaceMetadataClient methods once again throw RemoteExceptions where appropriate, making it easier for client code to catch errors from the watch face. ( I78785 )
  • ComplicationData and sub classes now have hashcode, equals and toString. ( I24bc6 )

Version 1.1.0-alpha01

۱۵ دسامبر ۲۰۲۱

androidx.wear.watchface:watchface-*:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.

ویژگی‌های جدید

  • The UserStyleSchema and ComplicationSlots can now be defined in XML. This simplifies watch face construction. In addition, WatchFaceMetadataClient queries are faster because it doesn't need to bind to the service to get the metadata. The WatchFaceMetadataClient and ListenableWatchFaceMetadataClient are no longer experimental and will become part of the stable api. The system will be able to optionally support multiple instances of a watch face, each with distinct user defined styling options. These will be visible in the watch face picker. To opt into this a watch face must include the following meta data tag in its manifest.

        <meta-data
            android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED"
            android:value="true" />
    
  • Some watch faces have state that's not captured in the UserStyle , to support this and multiple instances, the watch face's instance ID is now available via WatchState.watchFaceInstanceId .

  • ComplicationData is now being cached to allow complications to be displayed immediately upon loading. Sometimes ComplicationData is cached in memory by the system and sometimes it is serialized by the watch face libraries. When serialized any associated tapAction will be lost, if this happens ComplicationData.tapActionLostDueToSerialization will return true and the watch face should render the complication differently (eg grayed out or semi-transparent) to signal that it can't be tapped. The system will send updated ComplicationData with a tapAction as soon as possible.

  • Some ComplicationData shouldn't be cached for a long time, to support this we've added a more general feature ComplicationDataTimeline . This can be used to provide a sequence of time-gated ComplicationData to be delivered to the watch face which can be cached and updated automatically. For example, today's weather forecast at various times or multiple upcoming calendar events. ComplicationRequestListener has been extended with a new method onComplicationDataTimeline which you can use to return this data.

  • DefaultComplicationDataSourcePolicy has been extended so you can specify the ComplicationType for the primary and secondary data sources.

  • We've added support for synchronous complication providers where the complication is updated at a higher frequency than normal, up to once per second when the watch face is visible and non-ambient. Note: synchronous complication providers may have limited usage due to memory pressure concerns.

  • The PendingIntentTapListener changes are likely to be reverted because we solved the underlying problem (it's not possible for the watch face to launch activities for 5 seconds after pressing the home button) in the framework instead.

تغییرات API

  • ComplicationData.isCached has been changed to tapActionLostDueToSerialization which is more useful when determining if the complication slot should be rendered differently to signal that it can't be tapped. ( I6de2f )
  • Added ComplicationDataTimeline to wear-complication-data-source . This can be used to provide a sequence of time-gated ComplicationData to be delivered to the watch face which can be cached and updated automatically. For example, today's weather forecast at various times or multiple upcoming calendar events. ComplicationRequestListener has been extended with a new method onComplicationDataTimeline which you can use to return this data. There's a new kotlin wrapper SuspendingTimelineComplicationDataSourceService for suspending data source services. ( Idecdc )
  • Added PendingIntentTapListener and WatchFaceControlClient.getPendingIntentForTouchEvent . This can help watch faces that need to launch intents in response to taps to work around a problem where the framework blocks launching new activities for 5 seconds after pressing the home button. ( I98074 )
  • Introduced a per-watchface ComplicationData cache. The purpose of this is to allow the watch face to display last known complication data values upon loading until the system has had a chance to update them. There is a new API method WatchFaceControlClient.hasComplicationCache intended for OEMs. This may influence the system's strategy for sending complications to a watch face. In addition, ComplicationData has an isCached property and it is recommended that cached complications are rendered differently because the tapAction can not be cached and will be null in a cached complication. ( I404b0 )
  • The watch face's instance ID is now available via WatchState.watchFaceInstanceId . Most watch faces won't need to use this, but if there's a per-watch face state that's not stored in the Schema then this is the key to use to identify the watch face instance. To help support this you can now provide an ID when calling WatchFaceControlClient.createHeadlessWatchFaceClient . ( I1ff98 )
  • Extended DefaultComplicationDataSourcePolicy with the ability to set the default ComplicationTypes for the primary, secondary provider and for the fallback system provider. ComplicationSlot.defaultDataSourceType is now deprecated. ( If0ce3 )
  • ComplicationSlot.configExtras is now mutable and can be updated before calling EditorSession.openComplicationDataSourceChooser() . ( I6f852 )
  • Added WatchFace.setComplicationDeniedDialogIntent and setComplicationRationaleDialogIntent . These intents are launched to to show a rationale dialog before requesting complication permissions, and another dialog explaining that complication permission is needed when trying to edit a complication when permissions have been denied (the provider chooser will fail to open so the dialog is needed). ( I3a29c )
  • The UserStyleSchema and ComplicationSlots can now be defined in XML. This simplifies watch face construction and makes WatchFaceMetadataClient queries faster as they do not need to bind to the service to get the metadata. ( I85bfa )
  • Added InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent so a client can determine if a watch face supports getPendingIntentForTouchEvent . ( I0b917 )
  • WatchFaceMetadataClient and ListenableWatchFaceMetadataClient are no longer experimental. They can be used to efficiently obtain watch face metadata, where possible without opening a binder to the watch face. ( Ibb827 )
  • Added support for synchronous complication providers where the complication is updated at a higher frequency than normal, up to once per second when the watch face is visible and non-ambient. To use this the provider must include a new androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS metadata tag in its manifest and override onSynchronousComplicationRequest . Depending on the nature of the data source, it may also need to override onStartSynchronousComplicationRequests and onStopInteractiveComplicationRequests to get notifications of when the complication enters and exits interactive mode. ( I8fe9d )

نسخه ۱.۰

نسخه ۱.۰.۱

۹ فوریه ۲۰۲۲

androidx.wear.watchface:watchface-*:1.0.1 is released. Version 1.0.1 contains these commits.

رفع اشکالات

  • Fixes bug with PhotoImageComplicationData tapAction not being correctly handled ( I1cc30 )

نسخه ۱.۰.۰

۱ دسامبر ۲۰۲۱

androidx.wear.watchface:watchface-*:1.0.0 is released. Version 1.0.0 contains these commits.

Major Features of 1.0.0

The androidx.wear.watchface package is the new recommended library for developing WearOS watch faces. It has a number of new features over the old Wearable Support Library.

  • User styling (eg to change the color palette, the style of the watch hands, the look of the hour marks etc) is directly supported by the library (see androidx.wear.watchface.style ). It's now much easier to develop an on watch face editor using androidx.wear.watchface.editor and your watch face can be edited from the system companion app without you needing to write any extra code.
  • Best practices baked in. The library automatically generated screen reader content labels for complications (you can also add your own ones), and the framerate automatically drops when the battery is low and not charging to improve battery life.
  • Less code is needed to develop a watch face, especially for complications where a lot of the boilerplate has moved into the library.

رفع اشکالات

  • Fix EditorSession.userStyle.compareAndSet ( I6f676 )
  • Fix very short watch face delays ( Iffb97 )
  • Dispatch InteractiveWatchFaceImpl.onDestroy on the UI thread ( I83340 )
  • Fix several problems with broadcast receivers ( I7d25f )

Version 1.0.0-rc01

۳ نوامبر ۲۰۲۱

androidx.wear.watchface:watchface-*:1.0.0-rc01 is released. Version 1.0.0-rc01 contains these commits.

رفع اشکالات

  • Fix dump() (called by adb shell dumpsys) which got broken by flow migrations. ( 087cf9e )

  • Ensure proper ordering of writeDirectBootPrefs. We want writeDirectBootPrefs to always run after initStyleAndComplications or we risk delaying UI thread init.( 37650ac )

  • Ensure Renderer.onDestroy is called. In the scenario where the renderer has been created but WF init has not completed and Engine.onDestroy is called, we need to call Renderer.onDestroy. ( f9952dc )

  • Optimization/fix to isBatteryLowAndNotCharging. This patch moves the initial setup of isBatteryLowAndNotCharging earlier which means it can be done in parallel with createWatchFace. In addition we now listen to ACTION_POWER_DISCONNECTED. ( ddffd80

  • InteractiveWatchFaceClientImpl.isConnectionAlive to be false after close ( ab9774e )

Version 1.0.0-beta01

۲۷ اکتبر ۲۰۲۱

androidx.wear.watchface:watchface-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.

Version 1.0.0-alpha24

۱۳ اکتبر ۲۰۲۱

androidx.wear.watchface:watchface-*:1.0.0-alpha24 is released. Version 1.0.0-alpha24 contains these commits.

تغییرات API

  • Classes in package androidx.wear.watchface.complications have been moved into a new wear:watchface:watchface-complications project. Note this means you can't include this library as well as any previous alpha version of wear:watchface:watchface-complications-data because you'll get errors about duplicate classes. ( I97195 )
  • Renderer.dump has been renamed to Renderer.onDump and has been annotated with @UiThread. ( I44845 )
  • InteractiveWatchFaceClient.addWatchFaceReadyListener has been renamed to addOnWatchFaceReadyListener and removeWatchFaceReadyListener has been renamed to removeOnWatchFaceReadyListener . ( I48fea )
  • EditorSession getComplicationsPreviewData and getComplicationsDataSourceInfo are no longer suspend functions, instead they are StateFlow<> properties whose value is initially null. In ListenableEditorSession getListenableComplicationPreviewData and getListenableComplicationsProviderInfo have been removed in favor of the new StateFlow<> objects from the base class. If you need to listen to changes in java code, consider using androidx.lifecycle.FlowLiveDataConversions.asLiveData to convert to LiveData<> . ( Ic5483 )

Version 1.0.0-alpha23

۲۹ سپتامبر ۲۰۲۱

androidx.wear.watchface:watchface-*:1.0.0-alpha23 is released. Version 1.0.0-alpha23 contains these commits.

ویژگی‌های جدید

The watchface library is now a single library group, and as a result the libraries have moved and you will need to update your gradle imports as follows:

قدیمی جدید
androidx.wear:wear-complications-data androidx.wear.watchface:watchface-complications-data
androidx.wear:wear-complications-data-source androidx.wear.watchface:watchface-complications-data-source
androidx.wear:wear-watchface androidx.wear.watchface:watchface
androidx.wear:wear-watchface-complications-rendering androidx.wear.watchface:watchface-complications-rendering
androidx.wear:wear-watchface-client androidx.wear.watchface:watchface-client
androidx.wear:wear-watchface-client-guava androidx.wear.watchface:watchface-client-guava
androidx.wear:wear-watchface-data androidx.wear.watchface:watchface-data
androidx.wear:wear-watchface-editor androidx.wear.watchface:watchface-editor
androidx.wear:wear-watchface-editor-guava androidx.wear.watchface:watchface-editor-guava
androidx.wear:wear-watchface-guava androidx.wear.watchface:watchface-guava
androidx.wear:wear-watchface-style androidx.wear.watchface:watchface-style

تغییرات API

  • Migrate the separate androidx.wear Watchface and complications libraries into androidx.wear.watchface library group. ( b25f3c0 )
  • Added EditorRequest.canWatchFaceSupportHeadlessEditing to let a client know if a watchface editor supports headless editing. Note there will be some false negatives with this because support was added in asop/1756809 however it will return the correct value for all future watchfaces. ( ca55590 )
  • Renderer now has a dump() method which can be overridden to add custom data to the information generated by ABD shell dumpsys activity service WatchFaceService. ( 95235f9 )
  • InteractiveWatchFaceClient.addWatchFaceReadyListener now specifies the executor first. ( 563ac2f )
  • StateFlowCompatHelper has been removed. asLiveData (androidx.lifecycle.asLiveData) should be used instead. ( bd35d3 )
  • CurrentUserStyleRepository.userStyle is no longer mutable. ( I44889 )
  • WatchFaceReadyListener has been renamed to OnWatchFaceReadyListener. ( Ic12a9 )

رفع اشکالات

  • InteractiveInstanceManager.deleteInstance to call onDestroy This is needed to ensure InteractiveWatchFaceImpl gets garbage collected.( fce4af8 , b/199485839 )