Watchface بپوشید

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

توجه: از 10 ژوئیه 2024، واچ فیس ها باید از فرمت Watch Face استفاده کنند تا روی ساعت های جدیدی که با Wear OS 5 از قبل نصب شده راه اندازی می شوند، نصب شوند. در این مقاله مرکز راهنمایی درباره تغییرات کاربر بیشتر بیاموزید.

علاوه بر این، از اوایل سال 2025 (تاریخ مشخصی که در سه ماهه چهارم سال 2024 اعلام می شود)، تمام واچ فیس های جدید منتشر شده در Google Play باید از فرمت Watch Face استفاده کنند.

آخرین به روز رسانی انتشار پایدار کاندید را آزاد کنید نسخه بتا انتشار آلفا
18 سپتامبر 2024 1.2.1 - - 1.3.0-alpha04

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

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

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

Groovy

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"
}

Kotlin

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 کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.

یک شماره جدید ایجاد کنید

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

نسخه 1.3

نسخه 1.3.0-alpha04

18 سپتامبر 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha04 منتشر شد. نسخه 1.3.0-alpha04 حاوی این commit ها است.

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

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

رفع اشکال

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

نسخه 1.3.0-alpha03

17 آوریل 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha03 منتشر شد. نسخه 1.3.0-alpha03 حاوی این تعهدات است.

تغییرات API

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

رفع اشکال

  • قبلا selectComplicationDataForInstant برای هر خط زمانی toApiComplicationData فراخوانی می‌کرد، به این معنی که آزمون برابری مرجع === بعدی همیشه ناموفق بود. این به این معنی بود که هر فریمی که منجر به تخلیه باتری می‌شد، عوارض بارگذاری مجدد می‌شد. ( 717406 )

نسخه 1.3.0-alpha02

3 آوریل 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha02 منتشر شد. نسخه 1.3.0-alpha02 حاوی این commit ها است.

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

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

تغییرات API

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

نسخه 1.3.0-alpha01

7 فوریه 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha01 منتشر شد. نسخه 1.3.0-alpha01 حاوی این commit ها است.

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

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

تغییرات API

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

نسخه 1.2

نسخه 1.2.1

24 ژانویه 2024

androidx.wear.watchface:watchface-*:1.2.1 منتشر شد. نسخه 1.2.1 حاوی این commit ها است.

رفع اشکال

  • رفع خرابی در Samsung Galaxy Watch 4، 5 و 6. ( 43f0b0 )

نسخه 1.2.0

29 نوامبر 2023

androidx.wear.watchface:watchface-*:1.2.0 منتشر شد. نسخه 1.2.0 حاوی این commit ها است.

تغییرات مهم از 1.1.0

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

نسخه 1.2.0-rc01

18 اکتبر 2023

androidx.wear.watchface:watchface-*:1.2.0-rc01 منتشر شد. نسخه 1.2.0-rc01 حاوی این commit ها است.

نسخه 1.2.0-beta02

6 سپتامبر 2023

androidx.wear.watchface:watchface-*:1.2.0-beta02 منتشر شد. نسخه 1.2.0-beta02 حاوی این تعهدات است.

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

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

تغییرات API

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

نسخه 1.2.0-beta01

23 آگوست 2023

androidx.wear.watchface:watchface-*:1.2.0-beta01 منتشر شد. نسخه 1.2.0-beta01 حاوی این تعهدات است.

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

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

تغییرات API

  • برای عوارض سیستم پیش‌فرض آب‌وهوا را اضافه کنید. ( Ia0994 )
  • این وصله WatchFaceRuntimeService و WatchFaceControlClient.createWatchFaceRuntimeControlClient را به همراه پوشش های گواوا اضافه می کند. اینها از زمان‌های اجرا با صفحه ساعت پشتیبانی می‌کنند که نوع خاصی از صفحه ساعت است که تعریف آن را از یک بسته دیگر بارگیری می‌کند. در حال حاضر WearOS فقط از زمان اجرا برای قالب Android 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 )

نسخه 1.2.0-alpha09

21 ژوئن 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha09 منتشر شد. نسخه 1.2.0-alpha09 حاوی این commit ها است.

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

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

تغییرات API

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

نسخه 1.2.0-alpha08

19 آوریل 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha08 منتشر شد. نسخه 1.2.0-alpha08 حاوی این commit ها است.

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

  • از Android 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 face. این به این معنی است که یک ارائه‌دهنده عوارض ممکن است انتخاب کند که انواع مختلفی را به واچ‌فیس‌های قابل اعتماد در مقابل غیرقابل اعتماد ارائه دهد.

تغییرات API

  • انتشار @Deprecated class به ویژگی ( 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 )

نسخه 1.2.0-alpha07

22 فوریه 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha07 منتشر شد. نسخه 1.2.0-alpha07 حاوی این commit ها است.

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

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

  • همچنین از Android T CustomValueUserStyleSetting2 برای استفاده در دسترس است که می تواند تا 12.5 کیلوبایت را نگه دارد. محدودیت قبلی برای CustomValueUserStyleSetting 1 کیلوبایت بود. علیرغم افزایش محدودیت‌های اندازه، توسعه‌دهندگان چهره ساعت تشویق می‌شوند که داده‌ها را کوچک نگه دارند، زیرا تنظیمات در طول ویرایش از طریق بلوتوث ارسال می‌شوند و پهنای باند بلوتوث محدود است.

تغییرات API

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

نسخه 1.2.0-alpha06

25 ژانویه 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha06 منتشر شد. نسخه 1.2.0-alpha06 حاوی این commit ها است.

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

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

رفع اشکال

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

نسخه 1.2.0-alpha05

7 دسامبر 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha05 منتشر شد. نسخه 1.2.0-alpha05 حاوی این commit ها است.

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

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

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

تغییرات API

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

نسخه 1.2.0-alpha04

9 نوامبر 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha04 منتشر شد. نسخه 1.2.0-alpha04 حاوی این commit ها است.

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

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

تغییرات API

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

رفع اشکال

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

نسخه 1.2.0-alpha03

5 اکتبر 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha03 منتشر شد. نسخه 1.2.0-alpha03 حاوی این commit ها است.

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

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

تغییرات API

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

رفع اشکال

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

نسخه 1.2.0-alpha02

21 سپتامبر 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha02 منتشر شد. نسخه 1.2.0-alpha02 حاوی این commit ها است.

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

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

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

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

تغییرات API

  • مدیر کاغذ دیواری گاهی اوقات می تواند از یک موتور جدا شود و موتور دیگری بسازد. ما یک DisconnectReason int def و توسعه یافته ClientDisconnectListener با یک روش جدید اضافه کرده ایم که شامل DisconnectReason است که به شنونده اجازه می دهد تا جدا شدن موتور را مشاهده کند. ( I45cce )
  • دو پارامتر اختیاری nameResourceId و screenReaderResourceId به سازنده ComplicationSlotOverlay اضافه شد ( I157e8 )
  • ما یک پوشش گواوا برای اضافه بار جدید 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 ، NoPermissionComplicationData (و آزمایشی DiscreteRangedValueComplicationData ، GoalProgressComplicationData و WeightedElementsComplicationData ) همگی از SmallImages پشتیبانی می کنند. اگر یک صفحه ساعت انتخاب کند که یک پیچیدگی را با چندین رنگ ارائه کند، اکنون این گزینه را دارد که از SmallImage چند رنگی استفاده کند، جایی که قبلاً مجبور بود از یک تصویر تک رنگ استفاده کند. ( I257df )
  • Refactor PreviewImageUpdateRequestedListener به جای Consumer<> ( Ia875d )
  • جایگزینی نوع سفارشی Single Abstract Method (SAM) OnWatchfaceColorsListener با نوع SAM عمومی جاوا (Consumer) ( I0c489 )
  • ما متدهای قدیمی getOrCreateInteractiveWatchFaceClient و listenableGetOrCreateInteractiveWatchFaceClient را که یک PreviewImageUpdateRequestedListener مشخص نمی کنند، منسوخ کرده ایم. ( Iec502 )

رفع اشکال

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

نسخه 1.2.0-alpha01

10 آگوست 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha01 منتشر شد. نسخه 1.2.0-alpha01 حاوی این commit ها است.

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

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

تغییرات API

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

رفع اشکال

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

نسخه 1.1

نسخه 1.1.1

10 آگوست 2022

androidx.wear.watchface:watchface-*:1.1.1 منتشر شد. نسخه 1.1.1 حاوی این commit ها است.

  • این یک نسخه رفع اشکال است و کاربران نسخه 1.1.0 به شدت تشویق می شوند که آن را ارتقا دهند.

رفع اشکال

  • مقداردهی اولیه واچ فیس ناهمزمان است و اگر عارضه ای قبل از آماده شدن واچ فیس دریافت شود، در لیست pendingInitialComplications قرار می گیرد و بعدا اعمال می شود. متأسفانه pendingInitialComplications خیلی زود اعمال شد، به این معنی که یک پنجره زمانی در طول اولیه سازی صفحه ساعت وجود داشت که در آن عوارض همچنان روی pendingInitialComplications قرار می گرفتند و نادیده گرفته می شدند. این در حال حاضر رفع شده است. علاوه بر این، این وصله اشکالی را برطرف می‌کند که در آن ComplicationRenderer به اشتباه سعی می‌کرد جای‌بان‌ها را به‌صورت ناهمزمان بارگذاری کند، که با شکست مواجه شد و باعث شد که گرافیک کامپایل هرگز به‌روزرسانی نشود. در نهایت این وصله یک اشکال تئوری امیدوارانه را برطرف می کند که در آن چندین pendingInitialComplications باید ادغام شوند. ( 0d03ba3 )

  • رفع بن بست احتمالی در InteractiveInstanceManager که در آن getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance قفل را بیش از زمان لازم نگه می داشت. معمولاً انتظار داریم engine.setUserStyle سریع باشد، اما اگر به دلایلی اینطور نیست، می‌توانیم با بن‌بست/ANR مواجه شویم. این پچ کارهای غیر ضروری را از قفل خارج می کند و پتانسیل بن بست را از بین می برد. ( 5a2adca )

  • چندین مشکل که WatchFaceService حفظ کرده است را برطرف کنید. WakeLock گاهی اوقات می تواند WatchFaceService را حفظ کند، با افزودن یک release() این مشکل را برطرف می کند. همچنین StateFlows می‌تواند WatchFaceService حفظ کند و اصلاحات CoroutineScopes را لغو کند. ( fd48138 )

  • وقفه‌هایی را برای awaitDeferredWatchFace * اضافه کنید و watchfaceOverlayStyle NullPointerException برطرف کنید. در شرایط عادی این نباید از بین برود، از جمله پس از نصب تازه و سناریوهای DirectBoot که در آن بار CPU زیاد است. همچنین اگر getWatchfaceOverlayStyle پس از close() فراخوانی شود، NPE را رفع کرده ایم.( a4c3a5a )

نسخه 1.1.0

15 ژوئن 2022

androidx.wear.watchface:watchface-*:1.1.0 منتشر شد. نسخه 1.1.0 حاوی این commit ها است.

تغییرات مهم از 1.0.0

ویرایش بهبود یافته:

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

عوارض بهبود یافته:

  • اکنون می‌توانید ComplicationType برای منابع داده اولیه و ثانویه مشخص کنید، که به توسعه‌دهندگان انعطاف‌پذیری بیشتری برای تجربه خارج از جعبه می‌دهد.
  • ComplicationDataTimeline اضافه کرده‌ایم که مجموعه‌ای از داده‌های دارای بازه زمانی را برای تحویل به صفحه ساعت ارائه می‌دهد که می‌تواند به صورت خودکار ذخیره و به‌روزرسانی شود. به عنوان مثال، پیش بینی آب و هوای امروز در زمان های مختلف یا چندین رویداد تقویمی آینده.
  • ComponentName ارائه‌دهنده عوارض بخشی از ComplicationData است.
  • اکنون پیچیدگی‌ها در حافظه پنهان ذخیره شده‌اند که تجربه بهتری را هنگام جابجایی بین صفحه‌های ساعت فراهم می‌کند.

سایر تغییرات:

  • UserStyleSchema و ComplicationSlots اکنون در XML قابل تعریف هستند. این کار ساخت صفحه ساعت را ساده می‌کند و امکان جستجوی سریع‌تر ابرداده از سیستم را فراهم می‌کند.
  • صفحه‌های ساعت اکنون می‌توانند بر رنگ‌های مورد استفاده برای نمایش پوشش سیستم تأثیر بگذارند.

نسخه 1.1.0-rc01

18 مه 2022

androidx.wear.watchface:watchface-*:1.1.0-rc01 منتشر شد. نسخه 1.1.0-rc01 حاوی این commit ها است.

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

  • ما برخی از ترفندهای کاربردی را برای پشتیبانی از watchface XML ایجاد کرده‌ایم که تعیین ComplicationSlotBounds و مراجع پشتیبانی را آسان‌تر می‌کند. آزمایش با پیچیدگی لبه BoundingArc ادامه می‌یابد، و آن را از طریق لوله کشی برای drawHighlight انجام می‌دهد، اگرچه برای استفاده در آن زمان توصیه نمی‌شود.

تغییرات API

  • ما یک بار اضافی آزمایشی از drawHighlight اضافه کرده‌ایم که یک پارامتر BoundingArc را می‌پذیرد. ( I705f8 )
  • Watch face XML اکنون از منابع منابع پشتیبانی می کند. این به شما امکان می دهد از ثابت های یکسانی هم در XML و هم در کد خود استفاده کنید. ( I3ef61 )
  • ما توانایی تعریف ComplicationSlotBounds را به شکل center_x ، center_y ، size_x ، size_y اضافه کرده‌ایم. اکنون امکان استفاده از واحدهای مختلف (یعنی dp) با استفاده از منابع منابع نیز وجود دارد. ( Iace98 )

رفع اشکال

  • رفع runBlockingWithTracing که وظایف را در زمینه اشتباه انجام می داد. ( 4f595fe )
  • BaseEditorSession.close همزمان کنید. مشکل ناهمزمان بودن BaseEditorSession.close این است که ComplicationDataSourceInfoRetriever را خیلی دیر منتشر می کنیم که منجر به هرزنامه هشدار در logcat می شود. این احتمالاً بی ضرر بود، اما هرزنامه logcat حواس را پرت می کند و باید از آن اجتناب کرد. ( 35a5308 )

نسخه 1.1.0-beta02

11 مه 2022

androidx.wear.watchface:watchface-*:1.1.0-beta02 منتشر شد. نسخه 1.1.0-beta02 حاوی این تعهدات است.

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

  • ما پشتیبانی آزمایشی را برای انواع جدید ComplicationData اضافه کرده ایم ، اینها هنوز آماده استفاده نیستند بلکه این فضا را تماشا می کنند.

تغییرات API

  • ما BoundingArc ، یک کلاس آزمایشی را اضافه کرده ایم که هندسه یک شکاف عارضه لبه را توصیف می کند. این به ComplicationSlot اضافه شده و از طریق ComplicationSlotState و WatchFaceMetadataClient لوله کشی شده است. ( i61a40 )
  • ما توانایی وراثت تنظیمات را در UserStyleSetting XML اضافه کرده ایم. این امکان را به شما می دهد تا لفظی را کاهش داده و یک تنظیم بین فضای ساعت را به اشتراک بگذارید. ( IEF841 )
  • ما دو نوع آزمایشی جدید از ComplicationData اضافه کرده ایم: ListComplicationData و ProtoLayoutComplicationData . در حال حاضر هیچ پشتیبانی رندر برای هر یک از این نوع ها وجود ندارد و Wearos در حال حاضر این نوع را تشخیص نمی دهد در صورت اضافه شدن به مانیفست ComplicationDataSource's . ( i1811c )

رفع اشکال

  • سریال سازی از نوع TimeLineEntry را برطرف کنید. ما از نوع TimeLineEntry سریال نمی کردیم ، به این معنی که TimeLineEntries ذخیره شده از نوع nodata به طور نادرست تفسیر می شود که از نوع عارضه والدین در هنگام دسترسی به قسمتهای مورد نیاز غیر موجود در NPE ها استفاده می شود. ( 55FFDF5 )
  • رفع اشکالی که در آن setComplicationData زمینه های جدول زمانی را کاهش داده است ( FB392F5 )
  • رفع اشکالی که در آن گاهی اوقات runBlockingWithTracing منجر به NPE ( 12Ca62E ) می شود
  • رفع اشکال در جایی که ما گاهی اوقات ClassNotFoundException: android.support.wearable.complications.ComplicationText هنگام دریافت عارضه. ( 217942D9 )
  • اشکال را در GlesRenderer.backgroundThreadInitInternal رفع می کند که در صورت فراخوانی EGL14.eglCreateContext فقط در صورت فراخوانی onBackgroundThreadGlContextCreated تماس می گرفت. اشکال دیگری را برطرف می کند که در آن یک درخشش بصری در تصویر وجود دارد که ناشی از verticalFlip است. ( C674AD2 )
  • بررسی نسخه XML WatchFaceService ، از بسته اشتباه بارگیری می شد. ( DFA06F3 )
  • قالب سیم نگهدارنده در حال حاضر از یک بسته داخلی استفاده می کند. ما نمی خواهیم که صاحبخانه ها فضای ساعتهای موجود را که ممکن است از ASWCCOMPLICATIONDATA داخلی پنهان استفاده کند ، بشکنند. پیش از این قالب سیم از داده های NoDataComplication محل نگهداری مکان را در قسمتهای معمول ذخیره می کرد (مشکل ساز به دلیل چهره های قدیمی ، رشته مکان نگهدارنده را که در نظر گرفته نشده است) می کند ، در عوض ما اکنون از یک بسته داخلی برای جداسازی کامل این استفاده می کنیم. ( D5E7BD2 )

نسخه 1.1.0-beta01

20 آوریل 2022

androidx.wear.watchface:watchface-*:1.1.0-beta01 منتشر می شود. نسخه 1.1.0-beta01 حاوی این تعهدات است.

تغییرات API

  • اکنون روشهای WatchFaceMetadataClient ( getUserStyleSchema ، getComplicationSlotMetadataMap ، getUserStyleFlavors ) و HeadlessWatchFaceClient.getUserStyleFlavors به ​​جای WatchFaceException RuntimeException را کنترل نمی کنند. ( i0718a )
  • WatchFaceMetadataClient.WatchFaceException از کلاس خارج شده است تا مجدداً مورد استفاده مجدد قرار گیرد. ( i4e869 )

رفع اشکال

  • WatchFaceMetadataClient دیگر هنگام ارسال ComplicationSlotBounds جزئی دیگر خراب نمی شود. ( IAAFD )

نسخه 1.1.0-alpha05

6 آوریل 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha05 منتشر می شود. نسخه 1.1.0-alpha05 شامل این تعهدات است.

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

  • اکنون می توانید بگویید که کدام منبع داده با بازرسی از ComplicationData.dataSource یک ComplicationData ارسال کرده است ، برخی از چهره های ساعت ممکن است از این برای سفارشی کردن نمایش عارضه استفاده کنند. ( i44a73 )

تغییرات API

  • Renderer.CanvasRenderer و Renderer.GlesRenderer به نفع Renderer.CanvasRenderer2 و Renderer.GlesRenderer2 که SharedAssets پشتیبانی می کنند ، به روشهای ارائه دهنده کاهش یافته است. برای Java Interop ما ListenableCanvasRenderer2 و ListenableGlesRenderer2 معرفی کرده ایم. ( i31ffa )
  • اضافه شده @WatchFaceFlavorsExperimental توانایی تعریف طعم ها - لیست پیش تنظیم شده از فضای ساعتهای سبک ( I04DD0 )
  • Renderer.sharedAssets اکنون یک جریان دولتی است و ما Renderer.SharedAssetsFactory را حذف کرده ایم ( I12AC5 )
  • UserStyleSchema.userStyleSettings دیگر کاهش نمی یابد ( IBA7E3 )
  • ما HeadlessWatchFaceClient.getUserStyleSchemaDigestHash اضافه کرده ایم که به یک HeadlessWatchFaceClient اجازه می دهد تا از سربار نسبتاً کم عبور از طرح از طریق AIDL قبل از محاسبه هضم هضم جلوگیری کند. ( i33597 )
  • ما isUserStyleSchemaStatic به WatchFaceMetadataClient اضافه کرده ایم که درست است و فقط در صورتی که UserStyleSchema به تغییر نپرداز باشد ، مگر اینکه APK چهره ساعت به روز شود. ( i45a3f )
  • ما getDigestHash به UserStyleSchema اضافه کرده ایم که یک هشدار هضم این طرح را محاسبه می کند. این می تواند مورد استفاده قرار گیرد تا به طور مؤثر تعیین کند که آیا UserStyleSchema تغییر کرده است یا خیر. ( I2063D )
  • METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED به METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED ( i9ba5d ) تغییر نام داد.
  • UserStyleSetting.OnWatchEditorData به UserStyleSetting.WatchFaceEditorData تغییر نام داده است ، این شامل داده هایی است که صرفاً توسط ویرایشگر On Watch Face استفاده می شود. ( IF3AFB )

نسخه 1.1.0-alpha04

9 مارس 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha04 منتشر می شود. نسخه 1.1.0-alpha04 شامل این تعهدات است.

تغییرات API

  • ComplicationData به روز ممکن است MonochromaticImage.PLACEHOLDER در دسترس نباشد (به عنوان PhotoImage.PLACEHOLDER عوارض ذخیره شده منقضی شده) ، بنابراین ما NoDataComplication را با یک SmallImage.PLACEHOLDER اختیاری مکان نگهدارنده و اضافه شده است ComplicationText.PLACEHOLDER در متن یک مکان نگهدارنده NoDataComplicationData . در صورت انتخاب این مکان ها پیشنهاد می شود که با جعبه ها/قوس های خاکستری ارائه شود. ( i6285d )
  • ما ComplicationData.getNextChangeInstant اضافه کرده ایم که لحظه بعدی را به شما می گوید بعد از لحظه مرجع که در آن هر زمینه ای از عارضه ممکن است تغییر کند. این در داخل برای برنامه ریزی فریم ها برای به روزرسانی های عوارض استفاده می شود. به عنوان مثال اگر چهره ساعت به طور معمول یک بار در دقیقه به روز شود ، تنظیم عارضه Watch Watch باعث می شود که یک بار در ثانیه به روز شود. ( i7ceb2 )
  • EditorSession.watchFaceId اکنون می تواند در تمام سطوح API استفاده شود. علاوه بر این ، ارزش آن اکنون همیشه با WatchState.watchFaceInstanceId سازگار خواهد بود. ( i323b9 )
  • API getPendingIntentForTouchEvent دیگر لازم نیست زیرا مسئله اساسی در این چارچوب برطرف شده است ، بنابراین تمام API های مرتبط حذف شده اند. فضای ساعتها نیازی به انجام کار خاصی برای PendingIntents حال آتش سوزی ندارند ، حتی اگر اخیراً دکمه خانه فشرده شده باشد. ( i1f2e8 )
  • ما RendererParameters.isForScreenShot اضافه کرده ایم که اگر رندر برای یک صفحه نمایش باشد صادق خواهد بود. برخی از چهره های تماشای با انیمیشن ها برای اطمینان از بهترین نتیجه باید این موضوع را بدانند. ( i96d99 )
  • ما WatchFaceExceptionReason به WatchFaceException اضافه کرده ایم تا زمینه ای را برای آنچه اشتباه پیش آمد ، ارائه دهیم. ( I01D15 )
  • ComplicationDataSourceService.onImmediateComplicationRequest حذف شده است ، در عوض ComplicationRequest.immediateResponseRequired اضافه شده است تا نشان دهد که ارائه دهنده باید سریع پاسخ دهد (ایده آل در <100ms پاسخ می دهد). توجه داشته باشید که این قابلیت در پشت com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE مجاز است. ( IE6B23 )
  • ناپایدار بودن در Core و AppCompat برای مطابقت با Tiramisu DP2 ( I0CBB7 )

رفع اشکال

  • در صورت عدم موفقیت اعتبار سنجی برنامه ، برنامه Watchface با استثنا خراب می شود ( IA400F )

نسخه 1.1.0-alpha03

9 فوریه 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha03 منتشر می شود. نسخه 1.1.0-alpha03 شامل این تعهدات است.

تغییرات API

  • ما پشتیبانی آزمایشی را برای طرح های سبک سلسله مراتبی اضافه کرده ایم. ما یک ویژگی جدید را به androidx.wear.watchface.style.UserStyleSetting.Option ، ChildSettings اضافه کرده ایم که در ابتدا فقط توسط ListOption استفاده می شود. این اجازه می دهد تا یک سلسله مراتب از سبک ها برای استفاده توسط ویرایشگر UIS توصیف شود ، Userstyle زیربنایی بدون تغییر است و هنوز هم یک Map<String, ByteArray> است. ( IAF6F4 )
  • ما WatchFace.OverlayStyle را اضافه کرده ایم که به چهره ساعت اجازه می دهد تا ارائه پوشش وضعیت سیستم را پیکربندی کند. ( i8520D )
  • ما یک پارامتر جدید سازنده اختیاری برای CanvasRenderer (پیش فرض نادرست است) یک پارامتر جدید clearWithBackgroundTintBeforeRenderingHighlightLayer اختیاری را معرفی کرده ایم. ( IE01E5 )
  • اضافه شده androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED کلید ابرداده که به منابع داده عارضه اجازه می دهد تا نشان دهند که می توانند بدون هیچ پیکربندی یک مقدار پیش فرض را ارائه دهند ( ICC0D4 )
  • این معمول است که ویرایش چهره ساعت برای وجود یک نمونه تعاملی و بی سر و صدا وجود دارد. برای کمک به صرفه جویی در حافظه ، ما Renderer.SharedAssets معرفی کرده ایم که به یک رندر چهره ساعت اجازه می دهد تا داده های تغییر ناپذیر (به عنوان مثال بافت و سایه بان) را بین موارد به اشتراک بگذارد. GlesRenderer.setEglConfig و GlesRenderer.setEglDisplay مستهلک می شوند ، هرگز در نظر گرفته نشده بود که این موارد قابل حل باشد و انجام این کار منجر به رفتار نامشخص می شود. ( i0d9e7 )
  • ما setNameResourceId & setScreenReaderNameResourceId (که منابع رشته مرجع) را به ComplicationSlot.Builder و گیرنده های مربوطه در androidx.wear.watchface.client.ComplicationSlotState اضافه کرده ایم. این به سیستم اجازه می دهد تا نام عوارض را برای استفاده در ویرایشگران و خوانندگان صفحه نمایش واکشی کند. ( if6c6a )
  • WatchfaceMetadataClient.getUserStyleSchema و getComplicationSlotMetadataMap اکنون به جای RemoteException ، WatchFaceException پرتاب می کنند. ( i86f11 )
  • onSynchronousComplicationRequest و توابع مرتبط با آن در ComplicationDataSourceService به onImmediateComplicationRequest و غیره تغییر نام داده اند ... ( I87BA0 )
  • ویرایشگرهای Watch Face نسبت به ویراستاران همراه ، املاک و مستغلات بسیار کمتری دارند ، بنابراین پشتیبانی از نمادهای مختلف برای ویرایشگرهای Watch Face منطقی است. این وصله OnWatchEditorData (در حال حاضر فقط یک نماد) را به کلیه userstyletings ها و در صورت لزوم کلاس های گزینه آنها اضافه می کند. ( IF1886 )
  • ما @JvmOverloads به سازنده LearbeableSrenderer برای بهتر Interop Java اضافه کرده ایم. ( I2974a )

رفع اشکال

  • سازنده ListenableGlesRenderer اکنون به درستی به عنوان @Throws(GlesException::class) مشخص شده است ، و اکنون امکان گسترش این کلاس در جاوا امکان پذیر است. ( IAC6D0 )
  • رفع اشکال با PhotoImageComplicationData tapaction به درستی انجام نمی شود ( I1CC30 )

نسخه 1.1.0-alpha02

12 ژانویه 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha02 منتشر می شود. نسخه 1.1.0-alpha02 حاوی این commit ها است.

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

  • برای کمک به اشکال زدایی و آزمایش ، ComplicationData و زیر کلاسهای مرتبط هم اکنون دارای روشهای هشکد ، برابر و روشهای ToString است که باعث می شود کار با آنها آسان تر شود.

تغییرات API

  • روشهای WatchfaceMetadataClient یک بار دیگر RemoteExceptions در صورت لزوم پرتاب می کنند ، و این باعث می شود کد مشتری بتواند خطاهای چهره ساعت را بدست آورد. ( i78785 )
  • در حال حاضر ComplicationData و Sub Class اکنون HashCode ، Equals و ToString دارند. ( i24bc6 )

نسخه 1.1.0-alpha01

15 دسامبر 2021

androidx.wear.watchface:watchface-*:1.1.0-alpha01 منتشر می شود. نسخه 1.1.0-alpha01 حاوی این commit ها است.

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

  • UserStyleSchema و ComplicationSlots اکنون می تواند در XML تعریف شود. این باعث می شود ساخت و سازهای ساعت مچی انجام شود. علاوه بر این ، نمایش داده های WatchFaceMetadataClient سریعتر است زیرا برای به دست آوردن ابرداده نیازی به اتصال به سرویس ندارد. WatchFaceMetadataClient و ListenableWatchFaceMetadataClient دیگر آزمایشی نیستند و به بخشی از API پایدار تبدیل می شوند. این سیستم قادر خواهد بود به صورت اختیاری از چندین نمونه از یک ساعت مچی پشتیبانی کند ، هر کدام دارای گزینه های یک ظاهر طراحی شده کاربر مشخص هستند. این موارد در انتخاب کننده ساعت صورت قابل مشاهده خواهد بود. برای انتخاب این موضوع ، یک چهره ساعت باید برچسب داده متا زیر را در آشکار آن قرار دهد.

        <meta-data
            android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED"
            android:value="true" />
    
  • برخی از چهره های تماشای بیان شده در UserStyle ، برای پشتیبانی از این و موارد مختلف ، شناسه نمونه Watch Face اکنون از طریق WatchState.watchFaceInstanceId در دسترس است.

  • در حال حاضر ComplicationData در حال ذخیره است تا عوارض بلافاصله پس از بارگیری نمایش داده شود. بعضی اوقات ComplicationData توسط سیستم در حافظه ذخیره می شود و گاهی اوقات توسط کتابخانه های Watch Face سریال می شود. در صورت سریال سازی هر نوع tapaction مرتبط از بین می رود ، اگر این اتفاق بیفتد ComplicationData.tapActionLostDueToSerialization true باز می گردد و چهره ساعت باید این عارضه را متفاوت کند (به عنوان مثال خاکستری یا نیمه شفاف) تا نشان دهد که نمی توان از آن استفاده کرد. این سیستم در اسرع وقت ComplicationData به روز شده را با یک tapAction ارسال می کند.

  • برای حمایت ComplicationData این ، ما برای حمایت از این یک ویژگی کلی تر به ComplicationDataTimeline یک ویژگی کلی تر اضافه شده است. این می تواند برای ارائه دنباله ای از ComplicationData دروازه دار برای تحویل به صورت ساعت که می تواند ذخیره و به طور خودکار به روز شود ، استفاده شود. به عنوان مثال ، پیش بینی آب و هوا امروز در زمان های مختلف یا چندین رویداد تقویم آینده. ComplicationRequestListener با یک روش جدید onComplicationDataTimeline گسترش یافته است که می توانید برای بازگرداندن این داده ها استفاده کنید.

  • DefaultComplicationDataSourcePolicy گسترش یافته است ، بنابراین می توانید برای منابع داده اولیه و ثانویه ComplicationType مشخص کنید.

  • ما از ارائه دهندگان عارضه همزمان پشتیبانی می کنیم که در آن عارضه در فرکانس بالاتر از حد معمول به روز می شود ، تا زمانی که صورت ساعت قابل مشاهده و غیر آمیخته باشد ، یک بار در ثانیه. توجه: ارائه دهندگان عارضه همزمان ممکن است به دلیل نگرانی در مورد فشار حافظه ، استفاده محدودی داشته باشند.

  • تغییرات PendingIntentTapListener در حال تعقیب به دلیل اینکه مشکل اساسی را حل کرده ایم (ممکن نیست که چهره ساعت به مدت 5 ثانیه پس از فشار دادن دکمه صفحه اصلی فعالیت کند) در چارچوب حل شود.

تغییرات API

  • ComplicationData.isCached به tapActionLostDueToSerialization تغییر یافته است که در هنگام تعیین اینکه آیا شکاف عارضه باید به گونه ای متفاوت ارائه شود تا سیگنال شود که نمی توان از آن استفاده کرد. ( i6de2f )
  • ComplicationDataTimeline اضافه شده به wear-complication-data-source . این می تواند برای ارائه دنباله ای از ComplicationData دروازه دار برای تحویل به صورت ساعت که می تواند ذخیره و به طور خودکار به روز شود ، استفاده شود. به عنوان مثال ، پیش بینی آب و هوا امروز در زمان های مختلف یا چندین رویداد تقویم آینده. ComplicationRequestListener با یک روش جدید onComplicationDataTimeline گسترش یافته است که می توانید برای بازگرداندن این داده ها استفاده کنید. یک بسته بندی جدید Kotlin برای تعلیق خدمات منبع داده ، یک بسته بندی جدید Kotlin SuspendingTimelineComplicationDataSourceService . ( idecdc )
  • اضافه شده PendingIntentTapListener و WatchFaceControlClient.getPendingIntentForTouchEvent . این می تواند به تماشای چهره هایی که نیاز به راه اندازی اهداف در پاسخ به شیرها دارند ، کمک کند تا در مورد مشکلی کار کنند که در آن چارچوب بلوک فعالیت های جدید را به مدت 5 ثانیه پس از فشار دادن دکمه Home انجام می دهد. ( I98074 )
  • یک ComplicationData هر ساعت را در هر ساعت معرفی کرد. هدف از این امر این است که به چهره ساعت اجازه داده شود تا آخرین مقادیر داده های عارضه شناخته شده را پس از بارگیری به نمایش بگذارد تا اینکه سیستم فرصتی برای به روزرسانی آنها داشته باشد. یک روش جدید API WatchFaceControlClient.hasComplicationCache در نظر گرفته شده برای OEM ها وجود دارد. این ممکن است در استراتژی سیستم برای ارسال عوارض به چهره ساعت تأثیر بگذارد. علاوه بر این ، ComplicationData دارای یک خاصیت isCached است و توصیه می شود که عوارض ذخیره شده به طور متفاوتی ارائه شود زیرا tapAction نمی تواند ذخیره شود و در یک عارضه ذخیره شده null شود. ( i404b0 )
  • شناسه نمونه Watch Face اکنون از طریق WatchState.watchFaceInstanceId در دسترس است. اکثر چهره های ساعت نیازی به استفاده از این کار ندارند ، اما اگر یک حالت چهره در هر ساعت وجود داشته باشد که در این طرح ذخیره نشده باشد ، این کلید استفاده برای شناسایی نمونه چهره ساعت است. برای کمک به پشتیبانی از این امر ، اکنون می توانید هنگام تماس با WatchFaceControlClient.createHeadlessWatchFaceClient یک شناسه ارائه دهید. ( i1ff98 )
  • توسعه DefaultComplicationDataSourcePolicy با امکان تنظیم ComplicationTypes پیش فرض برای ارائه دهنده اولیه ، ثانویه و برای ارائه دهنده سیستم Fallback. ComplicationSlot.defaultDataSourceType اکنون کاهش یافته است. ( if0ce3 )
  • ComplicationSlot.configExtras اکنون قابل تغییر است و می تواند قبل از فراخوانی EditorSession.openComplicationDataSourceChooser() به روز شود. ( i6f852 )
  • WatchFace.setComplicationDeniedDialogIntent و setComplicationRationaleDialogIntent اضافه شده است. این اهداف برای نشان دادن گفتگوی منطقی قبل از درخواست مجوزهای عارضه راه اندازی شده است ، و گفتگوی دیگری توضیح می دهد که هنگام تلاش برای ویرایش یک عارضه در هنگام تکذیب مجوزها ، مجوز عوارض لازم است (انتخاب کننده ارائه دهنده نتوانسته است باز شود تا گفتگو مورد نیاز باشد). ( i3a29c )
  • UserStyleSchema و ComplicationSlots اکنون می تواند در XML تعریف شود. این امر باعث می شود چهره Watch Face ساخت و ساز را ساده تر کند و نمایش داده های WatchFaceMetadataClient را سریعتر می کند زیرا برای به دست آوردن ابرداده نیازی به اتصال به سرویس ندارند. ( i85bfa )
  • اضافه شده InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent ، بنابراین مشتری می تواند تعیین کند که آیا یک چهره ساعت از getPendingIntentForTouchEvent پشتیبانی می کند یا خیر. ( I0B917 )
  • WatchFaceMetadataClient و ListenableWatchFaceMetadataClient دیگر آزمایشی نیستند. از آنها می توان برای به دست آوردن کارآمد ابرداده صورت ، در صورت امکان بدون باز کردن یک اتصال دهنده به صورت ساعت استفاده کرد. ( IBB827 )
  • پشتیبانی اضافه شده برای ارائه دهندگان عارضه همزمان که در آن عارضه در فرکانس بالاتر از حد معمول به روز می شود ، تا زمانی که صورت ساعت قابل مشاهده و غیر آمیخته باشد ، یک بار در ثانیه. برای استفاده از این ، ارائه دهنده باید شامل یک androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS در آشکار باشد و از onSynchronousComplicationRequest استفاده کند. بسته به ماهیت منبع داده ، ممکن است نیاز به نادیده گرفتن onStartSynchronousComplicationRequests و onStopInteractiveComplicationRequests برای دریافت اعلان هایی از زمان ورود و خروج از حالت تعاملی داشته باشد. ( i8fe9d )

نسخه 1.0

نسخه 1.0.1

9 فوریه 2022

androidx.wear.watchface:watchface-*:1.0.1 منتشر می شود. نسخه 1.0.1 شامل این تعهدات است.

رفع اشکال

  • رفع اشکال با PhotoImageComplicationData tapaction به درستی انجام نمی شود ( I1CC30 )

نسخه 1.0.0

1 دسامبر 2021

androidx.wear.watchface:watchface-*:1.0.0 منتشر می شود. نسخه 1.0.0 شامل این تعهدات است.

ویژگی های اصلی 1.0.0

بسته androidx.wear.watchface کتابخانه جدید پیشنهادی برای توسعه چهره های WearOS Watch است. این ویژگی های جدید در کتابخانه پشتیبانی قدیمی پوشیدنی دارد.

  • یک ظاهر طراحی شده کاربر (به عنوان مثال برای تغییر پالت رنگ ، سبک دستان ساعت ، ظاهر ساعت و غیره) مستقیماً توسط کتابخانه پشتیبانی می شود (به androidx.wear.watchface.style مراجعه کنید). اکنون تهیه ویرایشگر On Watch Face با استفاده از Androidx.wear.watchface.editor و چهره ساعت شما می توانید از برنامه System Companion ویرایش کنید بدون اینکه نیاز به نوشتن کد اضافی داشته باشید.
  • بهترین شیوه های پخته شده در این کتابخانه به طور خودکار برچسب های محتوای صفحه نمایش صفحه نمایش را برای عوارض ایجاد می کند (شما همچنین می توانید موارد خود را اضافه کنید) ، و فریمر در صورت کم بودن باتری و شارژ برای بهبود عمر باتری به طور خودکار کاهش می یابد.
  • برای ایجاد یک چهره ساعت ، به ویژه برای عوارضی که بسیاری از پلاکت ها به داخل کتابخانه منتقل شده اند ، کد کمتری لازم است.

رفع اشکال

  • رفع EditorSession.userStyle.compareAndSet ( i6f676 )
  • تأخیرهای ساعت بسیار کوتاه را برطرف کنید ( IFFB97 )
  • اعزام InteractiveWatchFaceImpl.onDestroy در موضوع UI ( I83340 )
  • چندین مشکل با گیرنده های پخش ( I7D25F ) رفع کنید

نسخه 1.0.0-rc01

3 نوامبر 2021

androidx.wear.watchface:watchface-*:1.0.0-rc01 منتشر می شود. نسخه 1.0.0-RC01 شامل این تعهدات است.

رفع اشکال

  • رفع Dump () () که توسط ADB Shell Dumpsys نامیده می شود) که با مهاجرت جریان شکسته شد. ( 087CF9E )

  • از سفارش مناسب از WritedIrectBootPrefs اطمینان حاصل کنید. ما می خواهیم WritedIrectBootPrefs همیشه پس از برنامه های اولیه اجرا شود یا به خطر بیفتد و به تأخیر بیندازیم.

  • اطمینان حاصل کنید که renderer.ondestroy نامیده می شود. در سناریویی که Renderer ایجاد شده است اما WF Init تکمیل نشده است و موتور. ( F9952DC )

  • بهینه سازی/رفع IsBatterylowandNotharging. این پچ تنظیم اولیه isbatterylowandnotchring را در اوایل حرکت می دهد و این بدان معنی است که می توان آن را به طور موازی با CreateWatchFace انجام داد. علاوه بر این ، ما اکنون به action_power_disconnected گوش می دهیم. ( DDFFD80

  • interactiveWatchFaceClientImpl.IsconnectionAlive پس از بستن نادرست است ( AB9774E )

نسخه 1.0.0-beta01

27 اکتبر 2021

androidx.wear.watchface:watchface-*:1.0.0-beta01 منتشر می شود. نسخه 1.0.0-beta01 شامل این تعهدات است.

نسخه 1.0.0-alpha24

13 اکتبر 2021

androidx.wear.watchface:watchface-*:1.0.0-alpha24 منتشر می شود. نسخه 1.0.0-alpha24 شامل این تعهدات است.

تغییرات API

  • کلاس های بسته androidx.wear.watchface.complications به یک wear:watchface:watchface-complications . توجه داشته باشید این بدان معنی است که شما نمی توانید این کتابخانه و همچنین نسخه قبلی Alpha wear:watchface:watchface-complications-data را درج کنید زیرا در مورد کلاس های تکراری خطایی می کنید. ( I97195 )
  • Renderer.dump به Renderer.ondump تغییر نام داده است و با Uithread حاشیه نویسی شده است. ( i44845 )
  • InteractiveWatchFaceClient.addWatchFaceReadyListener به addOnWatchFaceReadyListener تغییر نام داده است و removeWatchFaceReadyListener به removeOnWatchFaceReadyListener تغییر نام داده است. ( i48fea )
  • editorsession getComplicationsPreviewData و getComplicationsDataSourceInfo دیگر توابع تعلیق نیستند ، در عوض آنها ویژگی های StateFlow<> هستند که مقدار آنها در ابتدا تهی است. در LeadeableDitorsession getListenableComplicationPreviewData و getListenableComplicationsProviderInfo به نفع اشیاء جدید StateFlow<> از کلاس پایه حذف شده اند. اگر نیاز به گوش دادن به تغییرات در کد جاوا دارید ، با استفاده از androidx.lifecycle.FlowLiveDataConversions.asLiveData در نظر بگیرید تا به LiveData<> تبدیل شوید. ( IC5483 )

نسخه 1.0.0-alpha23

29 سپتامبر 2021

androidx.wear.watchface:watchface-*:1.0.0-alpha23 منتشر می شود. نسخه 1.0.0-alpha23 شامل این تعهدات است.

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

کتابخانه Watchface اکنون یک گروه کتابخانه ای واحد است و در نتیجه کتابخانه ها حرکت کرده اند و شما باید واردات Gradle خود را به شرح زیر به روز کنید:

قدیمی جدید
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

  • کتابخانه های androidx.wear Watchface و عوارض جداگانه را به گروه کتابخانه androidx.wear.watchface منتقل کنید. ( B25F3C0 )
  • اضافه شده EditorRequest.CanWatchFacesUpportheadledited برای اطلاع مشتری در مورد اینکه آیا یک ویرایشگر Watchface از ویرایش بدون سر پشتیبانی می کند یا خیر. توجه داشته باشید که برخی از منفی های دروغین با این امر وجود خواهد داشت زیرا پشتیبانی در ASOP/1756809 اضافه شده است ، اما این مقدار صحیح را برای همه فضای مهم آینده باز می گرداند. ( CA55590 )
  • Renderer اکنون یک روش زباله () دارد که می تواند برای اضافه کردن داده های سفارشی به اطلاعات تولید شده توسط ABD Shell Dumpsys Activity Service WatchCeservice اضافه شود. ( 95235F9 )
  • InteractiveWatchFaceClient.AddwatchFacereAdylistener اکنون ابتدا مجری را مشخص می کند. ( 563AC2F )
  • StateFlowCompathelper حذف شده است. به جای آن باید از Aslivedata (androidx.lifecycle.aslivedata) استفاده شود. ( BD35D3 )
  • جریان فعلی. ( i44889 )
  • Watchfacereadylistener به OnwatchFacereadylistener تغییر نام داده است. ( IC12A9 )

رفع اشکال

  • interactiveInStanCemanager.DeleteInstance برای تماس با ondestroy این مورد برای اطمینان از تعاملی watchfaceImpl جمع آوری زباله جمع آوری شده است. ( FCE4AF8 ، B/199485839 )
،

Watch Watchface

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

توجه: از تاریخ 10 ژوئیه 2024 ، چهره های ساعت باید از فرمت چهره Watch استفاده کنند تا در ساعتهای جدیدی که با Wear OS 5 از قبل نصب شده اند ، نصب شوند. در مورد تغییرات کاربر در این مقاله مرکز راهنما بیشتر بدانید.

علاوه بر این ، از اوایل سال 2025 (تاریخ مشخصی که در طول Q4 2024 اعلام می شود) ، تمام چهره های ساعت جدید منتشر شده در Google Play باید از قالب Watch Face استفاده کنند.

آخرین به روز رسانی انتشار پایدار کاندید را آزاد کنید نسخه بتا انتشار آلفا
18 سپتامبر 2024 1.2.1 - - 1.3.0-alpha04

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

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

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

Groovy

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"
}

Kotlin

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 کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.

یک شماره جدید ایجاد کنید

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

نسخه 1.3

نسخه 1.3.0-alpha04

18 سپتامبر 2024

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 استفاده نمی کنند توصیه می شود نسخه 8.1 یا بعد از آن را به روز کنید. برای اطلاعات بیشتر به این مقاله مراجعه کنید. ( IA60E0 ، B/345472586 )

نسخه 1.3.0-alpha03

17 آوریل 2024

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

تغییرات API

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

رفع اشکال

  • پیش از این selectComplicationDataForInstant برای هر جدول زمانی toApiComplicationData فراخوانی می شد ، به این معنی که آزمون برابری مرجع بعدی === همیشه شکست می خورد. این بدان معنی بود که عوارض در حال بارگیری مجدد هر قاب منتهی به تخلیه باتری بودند. ( 717406 )

نسخه 1.3.0-alpha02

3 آوریل 2024

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

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

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

تغییرات API

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

نسخه 1.3.0-alpha01

7 فوریه 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha01 منتشر می شود. نسخه 1.3.0-alpha01 حاوی این commit ها است.

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

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

تغییرات API

  • StatefulWatchFaceService اکنون از غلبه بر getComplicationSlotInflationFactory پشتیبانی می کند که در آن کاربر اضافی تعریف شده توسط createExtra() تصویب می شود. ( i82d9f )
  • برخی از چهره های ساعت باید داده های کمکی ایجاد شده در هنگام createUserStyleSchema با سایر روشهای اولیه سازی را به اشتراک بگذارند. از آنجا که جایگزین بهتری وجود نداشت ، توسعه دهندگان به طور معمول WatchFaceServices را مطرح می کردند. این خطرناک است زیرا می توان چندین نمونه همزمان ایجاد کرد که می تواند منجر به اشکالات شود. برای حل این مسئله ، ما StatefulWatchFaceService و StatefulWatchFaceRuntimeService را معرفی کرده ایم که در آن یک نوع تعریف شده توسط کاربر توسط createExtra() ایجاد شده است و به عنوان یک پارامتر به روش های مختلف ایجاد منتقل می شود. ( if8a99 )
  • ما getUserStyleFlavors به InteractiveWatchFaceClient اضافه کرده ایم ، که در درجه اول مورد توجه OEM ها است. ( I0F5D8 )
  • GlesRenderer2 اکنون دارای اضافه بار سازنده است که به شما امکان می دهد لیستی از ویژگی ها را مشخص کنید تا به نوبه خود با eglChooseConfig امتحان کنید. به عنوان مثال این امکان را به شما می دهد که ابتدا پیکربندی را با ضد آلیاژ امتحان کنید و در صورت لزوم به یکی از آنها بازگردید. ( i1ba74 )
  • از Android U ، پشتیبانی از SystemDataSources.DATA_SOURCE_HEART_RATE به Wearos اضافه می شود. این عارضه فقط برای پشتیبانی از عوارض SHORT_TEXT تضمین شده است ، اما توصیه می شود که این ComplicationSlot برای پذیرش SMALL_IMAGE نیز باشد زیرا OEM ها ممکن است به جای ارزش زنده ، یک میانبر را برای برنامه سلامتی خود انتخاب کنند. ( i34223 )
  • ما METADATA_KEY_CONFIG_RESTORE_SUPPORTED اضافه کرده ایم که از Android u به بعد ، کنترل می کند که وقتی سیستم از پشتیبان تهیه شده برای منبع داده های عارضه با METADATA_KEY_DATA_SOURCE_CONFIG_ACTION ترمیم می شود. به طور پیش فرض ، سیستم فرض می کند که سرویس منبع داده عارضه از پشتیبان گیری از هرگونه داده پیکربندی پشتیبانی می کند ، اما اگر این کار را انجام ندهد ، می تواند ابرداده تنظیم METADATA_KEY_DATA_SOURCE_CONFIG_ACTION به FALSE اضافه کند که شکاف عوارض را به عنوان پیکربندی نشان نمی دهد. ( i6c505 )

نسخه 1.2

نسخه 1.2.1

24 ژانویه 2024

androidx.wear.watchface:watchface-*:1.2.1 منتشر می شود. نسخه 1.2.1 شامل این تعهدات است.

رفع اشکال

  • سقوط در سامسونگ Galaxy Watch 4 ، 5 & 6 ( 43F0B0 )

نسخه 1.2.0

29 نوامبر 2023

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

تغییرات مهم از 1.1.0

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

نسخه 1.2.0-RC01

18 اکتبر 2023

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

نسخه 1.2.0-beta02

6 سپتامبر 2023

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

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

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

تغییرات API

  • "منبع داده جدیدی را برای عوارض آب و هوا" در معرض دید خود قرار دهید. ( i6f335 )

نسخه 1.2.0-beta01

23 آگوست 2023

androidx.wear.watchface:watchface-*:1.2.0-beta01 منتشر می شود. نسخه 1.2.0-beta01 حاوی این تعهدات است.

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

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

تغییرات API

  • برای عوارض ، خطای سیستم پیش فرض آب و هوا را اضافه کنید. ( IA0994 )
  • این وصله اضافه می کند WatchFaceRuntimeService و WatchFaceControlClient.createWatchFaceRuntimeControlClient به همراه بسته های گواوا. اینها پشتیبانی از زمان های تماشای چهره را که نوع خاصی از چهره ساعت است که تعریف آن از یک بسته دیگر است ، اضافه می کند. در حال حاضر Wearos فقط از زمان اجرا برای فرمت چهره Android پشتیبانی می کند. ( i2799f )
  • این پچ پیگیری AOSP/2636578 است که در آن ما DEP های Int را تغییر نام می دهیم ، بنابراین هر کد بسته به WatchFaceType ، CanvasType ، TapType یا ComplicationsSlotBoundsType نیازی به تغییر ندارد. ( i4098b )
  • پرونده های API به روز شده برای حاشیه نویسی سرکوب سازگاری. ( i8e87a ، b/287516207 )
  • این پچ ثابت های WatchFaceType در WatchFaceTypes ، ثابت CanvasType در CanvasTypes ، ثابت های TapType در TapTypes و عوارض ثابت ComplicationsSlotBoundsType در ComplicationsSlotBoundsType در معرض نمایش قرار می دهد. ( i3b85a ، b/288750666 )
  • WatchFace.OverlayStyle استفاده بسیار کمی دارد و توسط OEM ها به خوبی پشتیبانی نمی شود ، بنابراین ما آن را با قصد حذف آن در تاریخ بعدی کاهش می دهیم. ( i7344a )

نسخه 1.2.0-alpha09

21 ژوئن 2023

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

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

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

تغییرات API

  • انواع پویا برای مسافت روزانه ، کالری روزانه و طبقه های روزانه اضافه شده است. کلیدهای منابع بهداشتی پلتفرم اکنون تحت PlatformHealthSources.Keys ( IB7637 ) هستند
  • Implement PlatformDataProvider to provide heart rate and daily steps. SensorGateway interface is removed from public API. ( I55b84 )
  • Rename StateEntryValue to DynamicDataValue , and update the state APIs to use the DynamicDataKey . ( If1c01 )
  • Add AppDataKey for accessing app pushed state; Add PlatformDataKey for accessing platform data; Add namespace support in StateStore . ( I7985e )
  • enable / disablePlatformSource methods have been removed from DynamicTypeEvaluator . The caller should be responsible for updates. ( I78c6d )
  • Allow capping the size of bound data types. ( Ie2966 )

Version 1.2.0-alpha08

19 آوریل 2023

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

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

  • From Android T, complication providers with the privileged com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE may register androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES metadata which overrides android.support.wearable.complications.SUPPORTED_TYPES for safe watch faces. This means a complication provider may choose to serve different types to trusted vs untrusted watchfaces.

تغییرات API

  • Propagation of @Deprecated class to property ( I882d1 , b/271441831 )
  • Value parameter name for Enum.valueOf changed ( Ia9b89 )
  • More thrown exceptions from enum valueOf ( I818fe )
  • We've removed renderWatchFaceToSurface in favour of createRemoteWatchFaceView which is built on top of SurfaceControlViewHost and allows the caller to embed a view from the watch face, which is rendered when the client calls RemoteWatchFaceViewHost#renderWatchFace . ( Ib311d )
  • We've added renderWatchFaceToSurface to InteractiveWatchFaceClient , HeadlessWatchFaceClient and EditorSession . Typically this will be more performant than rendering to a bitmap. ( Ieacad )
  • ObservableStateStore has been rename to StateStore . ( Ieb0e2 )
  • Added DynamicTypeEvaluator.Builder instead of constructor arguments to allow more optional arguments, including ObservableStateStore which now defaults to an empty store. ( I6f832 )
  • Refactored order of parameters in DynamicTypeEvaluator . ( Ic1ba4 )
  • Executor has been added to the DynamicTypeEvaluator.bind methods. ( I346ab )
  • We have added startEvaluation method to the BoundDynamicType to trigger the evaluation after dynamic type is bound. ( I19908 )
  • Complication providers with the privileged com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE may register androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES metadata which overrides android.support.wearable.complications.SUPPORTED_TYPES for safe watch faces. ( Id1c73 )
  • We've renamed CustomValueUserStyleSettings2 to LargeCustomValueUserStyleSettings . ( Ic17ac )

رفع اشکال

  • DynamicTypeValueReceiver#onPreUpdate has been removed. ( I2dc35 )

Version 1.2.0-alpha07

22 فوریه 2023

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

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

  • From Android T, OEMs will be able to determine if a complication request is from a watch face in the list defined by the android.support.wearable.complications.SAFE_WATCH_FACES metadata in their provider's manifest by ComplicationRequest#isForSafeWatchFace . The provider will need the com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE permission to receive anything other than TargetWatchFaceSafety.UNKNOWN .

  • Also from Android T CustomValueUserStyleSetting2 is available for use which can hold up to 12.5kb. The previous limit for CustomValueUserStyleSetting was 1kb. Despite the increased size limits, watch face developers are encouraged to keep the data small because the settings get sent over bluetooth during editing and bluetooth bandwidth is limited.

تغییرات API

  • We've added an optional parameter eglContextAttribList to GlesRenderer & GlesRenderer2 which allows you to set the EGL14.EGL_CONTEXT_CLIENT_VERSION passed to EGL14.eglCreateContext . ( I2a83e )
  • We've migrated watch face libs over to androidx.core.util.Consumer instead of java.util.function.Consumer . ( I273f5 )
  • More thrown exceptions from KT property accessors ( Iff9d9 )
  • We've added InteractiveWatchFaceClient.isComplicationDisplayPolicySupported so that the client can determine if it has to emulate support or not on behalf of old watch faces. ( I24c89 )
  • We've decided that isForSafeWatchFace should be a tri-state IntDef . ( Ief2f7 )
  • For android T we've introduced ComplicationRequest.isForSafeWatchFace which is intended for OEM use and it requires com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE . For data sources in the system image, this will return true if the requesting watch face is inside the list of safe watchfaces specified by the data source in it's manifest. ( I0cbb6 )
  • For android T we've added CustomValueUserStyleSetting2 which can hold up to 12.5kb. The previous limit for CustomValueUserStyleSetting was 1kb. ( I0b100 )

Version 1.2.0-alpha06

25 ژانویه 2023

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

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

  • Work is ongoing to add support for complication platform bindings, this isn't ready for use yet, but stay tuned!
  • We've added XML ComplicationSlot support for the new complication types, GOAL_PROGRESS and WEIGHTED_ELEMENTS.

رفع اشکال

  • Fixes a leak where the watch face editor was not properly released on Samsung devices. ( 3b5987 )
  • Fixes a bug where sometimes the complications didn't display properly when switching between a watch face with multiple favorites. ( b38ece )
  • Fixes a serialization bug with perOptionScreenReaderNames that lead to watch face crashes. ( e9f466 )

Version 1.2.0-alpha05

7 دسامبر 2022

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

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

  • A while back we added support for hierarchical UserStyleSettings , and from android T it's now possible to have more than one ComplicationSlotsUserStyleSetting in a hierarchy. Only one ComplicationSlotsUserStyleSetting will be active, based on the user's style selections.

  • We're improving screen reader support for ListOption and ComplicationSlotsOption by adding a screenReaderName field, note prior to android T this field will be ignored by companion editors.

تغییرات API

  • We've added a new optional screenReaderName field to ListOption and ComplicationSlotsOption for use by editors - will be ignored by companion editors on devices before android T. ( I75326 )
  • From android T multiple ComplicationSlotsUserStyleSettings are now supported in a style hierarchy as long as at most only one of them can be active at any one time. We've added a utility function findComplicationSlotsOptionForUserStyle to UserStyleSchema to help find the active ComplicationSlotsOption if any. ( Ic2b06 )
  • RangedValuesTypes have been pulled into RangedValueComplicationData 's companion object and renamed to TYPE_UNDEFINED , TYPE_RATING and a new TYPE_PERCENTAGE has been added. ( I55d02 )
  • We've renamed experimental DynamicFloat to FloatExpression and marked it as @hide . ( Idf4f1 )
  • Adding @JvmDefaultWithCompatibility annotation ( I8f206 )

Version 1.2.0-alpha04

9 نوامبر 2022

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

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

  • For Android T we've added support for two new complication types, GoalProgressComplicationData and WeightedElementsComplicationData .
  • GoalProgressComplicationData is similar to RangedValueComplicationData but it's value is allowed to go past the target (for RangedValueComplicationData the value is clamped to the range [min .. max]) which has implications for visual design that might not suit all watch faces.
  • GoalProgressComplicationData adds support for pie charts and similar breakdowns of simple data.
  • We've added optional support for ColorRamps to RangedValueComplicationData .
  • For Android T, We've added ComplicationPersistencePolicy and setCachePolicy to ComplicationData which currently allows a provider to control whether a complication is persisted or not (ie whether it's cached past reboot). Most complications won't need to set cache control, but doing so can fix corner cases with stale data for some complications that update frequently (eg health data complications). We've also added ComplicationDisplayPolicy where DO_NOT_SHOW_WHEN_DEVICE_LOCKED instructs a compatible watch face to not display the complication when the device is locked. ( Ic9574 )

تغییرات API

  • GoalProgressComplicationData , WeightedElementsComplicationData and ColorRamp are no longer experimental. ( Ica9e2 )
  • ComplicationPersistencePolicy and ComplicationDisplayPolicy are now properly marked as T APIs. ( I31d88 )
  • The deprecated ComplicationSlotOverlay constructor now has DeprecationLevel.WARNING allowing it to be called from java once again. ( Ib308c )
  • We've fixed some java compat issues with ComplicationRequestListener , CanvasComplication , ComplicationTapFilter and InteractiveWatchFaceClient by annotating them with @JvmDefaultWithCompatibility ( Id94fc )
  • We've removed experimental ProtoLayoutComplicationData and ListComplicationData . The developer story for these was unclear, we hope to revisit in future. ( I9df05 )
  • We've added a ValueType back to RangedValueComplicationData . WeightedElementsComplicationData now supports a background color. We've removed DiscreteRangedValueComplicationData because it's functionality is a subset of WeightedElementsComplicationData . ( I6446c )

رفع اشکال

  • Include the isForScreenShot in the equals and hash code. Make sure the onRenderParametersChanged gets a correct isForScreenshot value ( I04a41 )
  • Fixed leaks of WatchFaceControlService from headless clients. ( e90e00 )

Version 1.2.0-alpha03

5 اکتبر 2022

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

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

  • No new features, but we have fixed a couple of watch face editor bugs.

تغییرات API

  • Deprecated UserStyleSchema.userStyleSettings as rootUserStyleSettings become non-experimental ( Ie96e3 )
  • Move rootUserStyleSettings out of experimental ( I8d6b3 )
  • We've marked WatchFaceColors as experimental because it is not supported by all systems ( I6d75d )
  • Expose DisconnectReasons in the public API to make it work with IntDef . ( I791f8 )

رفع اشکال

  • Close any open on watch editor if SysUI dies. If SysUI dies and the on watch face editor doesn't close, the watch face could be left in an inconsistent state because the system relies on SysUI to persist any user style changes.( ba762a
  • Fix a memory leak in ComplicationDataSourceInfoRetriever , where a kotlin coroutine continuation was acting as a gc root and retaining the editor activity.( 33ee06 )

نسخه 1.2.0-alpha02

21 سپتامبر 2022

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

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

  • Some watch faces have configuration outside of the UserStyle that affects it visually, (eg selecting a background photo). We've added Renderer.sendPreviewImageNeedsUpdateRequest which allows the watch face to request an updated preview image. Note this requires a corresponding system up date to work.

  • We've also added an API for watch faces to expose their colors to the system which may choose its color palette based on this. Note that this has been made experimental in a follow on patch.

  • Just about every type of ComplicationData now supports SmallImages .

تغییرات API

  • Wallpaper manager can sometimes detach from an engine and make another. We've added a DisconnectReason int def and extended ClientDisconnectListener with a new method which includes a DisconnectReason , allowing the listener to observe engine detaches. ( I45cce )
  • Added two optional parameters nameResourceId and screenReaderResourceId to ComplicationSlotOverlay constructor ( I157e8 )
  • We've added a guava wrapper for the new overload of getOrCreateInteractiveWatchFaceClient with a PreviewImageUpdateRequestedListener . ( Ic31f0 )
  • We've added Renderer.sendPreviewImageNeedsUpdateRequest which is useful for watch faces that have state outside of the UserStyleSchema which affects the way they look (eg a watch face with a selectable background image). On the client side we've added PreviewImageUpdateRequestedListener as an optional parameter to getOrCreateInteractiveWatchFaceClient to observe these requests. ( Iff44a )
  • We've simplified the API for exposing WatchFaceColors , now there's a simple property called watchFaceColors on the Renderer which the watch face can set, this should be updated as necessary in response to any style changes. Instead of using WallpaperManager to observe color changes, we've added OnWatchFaceColorsListener to InteractiveWatchFaceClient . ( I490bc )
  • We've added a WatchFaceColors class which holds the three most prominent watch face colors and added open methods watchfaceColors & notifyWatchFaceColorsChanged to the Renderer, these allow the system to obtain the colors of the watch face via WallpaperManager.getWallpaperColors . ( I3d611 )
  • ShortTextComplicationData , RangedValueComplicationData , NoPermissionComplicationData (and experimental DiscreteRangedValueComplicationData , GoalProgressComplicationData and WeightedElementsComplicationData ) now all support SmallImages . If a watch face chooses to render a complication with multiple colors, it now has the option to use a multi-colored SmallImage where previously it would have had to use a monochromatic image. ( I257df )
  • Refactor PreviewImageUpdateRequestedListener to be a Consumer<> instead ( Ia875d )
  • Replace custom Single Abstract Method (SAM) type OnWatchfaceColorsListener with generic Java SAM type (Consumer) ( I0c489 )
  • We've deprecated the old getOrCreateInteractiveWatchFaceClient and listenableGetOrCreateInteractiveWatchFaceClient methods that don't specify a PreviewImageUpdateRequestedListener . ( Iec502 )

رفع اشکال

  • DisconnectReason.BINDER_DIED has been renamed to DisconnectReason.ENGINE_DIED . ( I4eb0e )

نسخه 1.2.0-alpha01

10 آگوست 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha01 is released. نسخه 1.2.0-alpha01 حاوی این commit ها است.

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

  • We've added experimental support for various new complication formats. This is an area of active development; these new formats are subject to change without notice and currently there's no renderer support from CanvasComplicationDrawable .
  • We've also added optional margins to complication slots which make small complications easier to tap on.

تغییرات API

  • The experimental BoundingArc class is now immutable. ( If624a )
  • Small complications can be tricky to tap on. To help mitigate this, we've introduced support for margins which increase the tappable area without affecting rendering. Unless specified (either in code or via XML) ComplciationSlots have zero sized margins. ( I14089 )
  • Changed getComplicationSlotInflationFactory(CurrentUserStyleRepository) signature to return a non-null factory instance. It was an error to return null before, so this is just making the API contract clearer. ( I0fcc0 )
  • We've added currentUserStyleRepository argument to the WatchFaceService.getComplicationSlotInflationFactory method to be consistent with createComplicationSlotsManager . ( I2ddd2 )
  • UserStyleFlavors have become non-experimental feature. ( I69cdc )
  • We have removed the experimental ValueType from RangedValueComplicationData and instead introduced experimental DiscreteRangedValueComplicationData which is like RangedValueComplicationData except for integer range & value. We've also introduced experimental GoalProgressComplicationData which is similar to RangedValueComplicationData except it's for progress towards a goal where min implicitly is zero, and the value is allowed to be larger than targetValue . Note for all RangedValue variants at least one of monochromeImage, text or title must be specified. ( I9590c )
  • We removed boundsWithMargins from ComplicationSlotState because system software doesn't have a use case for it. ( I42e26 )
  • We've added experimental support for WeightedElementsComplicationData which consists of an array of Elements (pairs of weight and color) along with optional text/title/image. These might be displayed as a pie chart where the colors need to be meaningful given the context, since there typically isn't room in a complication to render labels. ( I87eea )
  • The experimental ColorRamps optionally used by RangedValueComplicationData and GoalProgressComplicationData now allow you to specify a sequence of up to seven colors and a flag stating whether the colors should be smoothly tweened or whether equal sized solid steps of color should be rendered. ( I9f5bf )
  • RangedValueComplicationData.drawSegmented has been changed to valueType which is an int with a corresponding ValueType IntDef which provides semantic meaning to the ranged value and may be used by the complication renderer to influence styling. ( I0616b )
  • We've added experimental support for optional ColorRanges to RangedValueComplicationData . Normally complications would be rendered in colors of the watch face's choosing, but sometimes the ComplicationDataSource is best placed to set the colors eg when they have a particular semantic meaning. Eg red to blue for temperature. ( I5153a )
  • We've added an experimental drawSegmented hint to RangedValueComplicationData . This signals renderers to draw the ranged value indicator with segments, where 1 segment = 1 unit. ( I7d7c1 )

رفع اشکال

  • We've added the ability to define ComplicationSlotBounds relative to a predefined screen coordinate system. ( I0985d )

نسخه 1.1

Version 1.1.1

10 آگوست 2022

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

  • This is a bug fix release and users of version 1.1.0 are strongly encouraged to upgrade.

رفع اشکال

  • 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 )

نسخه 1.1.0

15 ژوئن 2022

androidx.wear.watchface:watchface-*:1.1.0 is released. نسخه 1.1.0 حاوی این commit ها است.

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.

سایر تغییرات:

  • 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.

نسخه 1.1.0-rc01

18 مه 2022

androidx.wear.watchface:watchface-*:1.1.0-rc01 is released. نسخه 1.1.0-rc01 حاوی این commit ها است.

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

  • 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

May 11, 2022

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 )

نسخه 1.1.0-beta01

20 آوریل 2022

androidx.wear.watchface:watchface-*:1.1.0-beta01 is released. نسخه 1.1.0-beta01 حاوی این تعهدات است.

تغییرات 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

6 آوریل 2022

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

9 مارس 2022

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

9 فوریه 2022

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 )

نسخه 1.1.0-alpha02

12 ژانویه 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha02 is released. نسخه 1.1.0-alpha02 حاوی این commit ها است.

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

  • 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 )

نسخه 1.1.0-alpha01

15 دسامبر 2021

androidx.wear.watchface:watchface-*:1.1.0-alpha01 is released. نسخه 1.1.0-alpha01 حاوی این commit ها است.

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

  • 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 )

نسخه 1.0

Version 1.0.1

9 فوریه 2022

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 )

نسخه 1.0.0

1 دسامبر 2021

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 )

نسخه 1.0.0-rc01

3 نوامبر 2021

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 )

نسخه 1.0.0-beta01

27 اکتبر 2021

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

Version 1.0.0-alpha24

13 اکتبر 2021

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

29 سپتامبر 2021

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 )