Watchface بپوشید
توجه: از 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
برای برنامه یا ماژول خود اضافه کنید:
شیار
dependencies { // Use to implement wear watchfaces implementation "androidx.wear.watchface:watchface:1.2.1" // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation "androidx.wear.watchface:watchface-editor:1.2.1" // Can use to render complications. // This library is optional and watchfaces may have custom implementation for rendering // complications. implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1" }
کاتلین
dependencies { // Use to implement wear watchfaces implementation("androidx.wear.watchface:watchface:1.2.1") // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation("androidx.wear.watchface:watchface-editor:1.2.1") // Can use to render complications. // This library is optional and watchfaces may have custom implementation for rendering // complications. implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1" }
برای اطلاعات بیشتر درباره وابستگیها، به افزودن وابستگیهای ساخت نگاه کنید.
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 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
¬ifyWatchFaceColorsChanged
به 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 برای تعلیق خدمات منبع داده ، یک بسته بندی جدید KotlinSuspendingTimelineComplicationDataSourceService
. ( idecdc ) - اضافه شده
PendingIntentTapListener
وWatchFaceControlClient.getPendingIntentForTouchEvent
. این می تواند به تماشای چهره هایی که نیاز به راه اندازی اهداف در پاسخ به شیرها دارند ، کمک کند تا در مورد مشکلی کار کنند که در آن چارچوب بلوک فعالیت های جدید را به مدت 5 ثانیه پس از فشار دادن دکمه Home انجام می دهد. ( I98074 ) - یک
ComplicationData
هر ساعت را در هر ساعت معرفی کرد. هدف از این امر این است که به چهره ساعت اجازه داده شود تا آخرین مقادیر داده های عارضه شناخته شده را پس از بارگیری به نمایش بگذارد تا اینکه سیستم فرصتی برای به روزرسانی آنها داشته باشد. یک روش جدید APIWatchFaceControlClient.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
. توجه داشته باشید این بدان معنی است که شما نمی توانید این کتابخانه و همچنین نسخه قبلی Alphawear:watchface:watchface-complications-data
را درج کنید زیرا در مورد کلاس های تکراری خطایی می کنید. ( I97195 ) - Renderer.dump به Renderer.ondump تغییر نام داده است و با Uithread حاشیه نویسی شده است. ( i44845 )
-
InteractiveWatchFaceClient.addWatchFaceReadyListener
بهaddOnWatchFaceReadyListener
تغییر نام داده است وremoveWatchFaceReadyListener
بهremoveOnWatchFaceReadyListener
تغییر نام داده است. ( i48fea ) - editorsession
getComplicationsPreviewData
وgetComplicationsDataSourceInfo
دیگر توابع تعلیق نیستند ، در عوض آنها ویژگی هایStateFlow<>
هستند که مقدار آنها در ابتدا تهی است. در LeadeableDitorsessiongetListenableComplicationPreviewData
و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
توجه: از تاریخ 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
برای برنامه یا ماژول خود اضافه کنید:
شیار
dependencies { // Use to implement wear watchfaces implementation "androidx.wear.watchface:watchface:1.2.1" // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation "androidx.wear.watchface:watchface-editor:1.2.1" // Can use to render complications. // This library is optional and watchfaces may have custom implementation for rendering // complications. implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1" }
کاتلین
dependencies { // Use to implement wear watchfaces implementation("androidx.wear.watchface:watchface:1.2.1") // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation("androidx.wear.watchface:watchface-editor:1.2.1") // Can use to render complications. // This library is optional and watchfaces may have custom implementation for rendering // complications. implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1" }
برای اطلاعات بیشتر درباره وابستگیها، به افزودن وابستگیهای ساخت نگاه کنید.
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 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
toDynamicDataValue
, and update the state APIs to use theDynamicDataKey
. ( If1c01 ) - Add
AppDataKey
for accessing app pushed state; AddPlatformDataKey
for accessing platform data; Add namespace support inStateStore
. ( I7985e ) -
enable
/disablePlatformSource
methods have been removed fromDynamicTypeEvaluator
. 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 registerandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
metadata which overridesandroid.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 ofcreateRemoteWatchFaceView
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 callsRemoteWatchFaceViewHost#renderWatchFace
. ( Ib311d ) - We've added
renderWatchFaceToSurface
toInteractiveWatchFaceClient
,HeadlessWatchFaceClient
andEditorSession
. Typically this will be more performant than rendering to a bitmap. ( Ieacad ) -
ObservableStateStore
has been rename toStateStore
. ( Ieb0e2 ) - Added
DynamicTypeEvaluator.Builder
instead of constructor arguments to allow more optional arguments, includingObservableStateStore
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 theBoundDynamicType
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 registerandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
metadata which overridesandroid.support.wearable.complications.SUPPORTED_TYPES
for safe watch faces. ( Id1c73 ) - We've renamed
CustomValueUserStyleSettings2
toLargeCustomValueUserStyleSettings
. ( 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 byComplicationRequest#isForSafeWatchFace
. The provider will need thecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
permission to receive anything other thanTargetWatchFaceSafety.UNKNOWN
.Also from Android T
CustomValueUserStyleSetting2
is available for use which can hold up to 12.5kb. The previous limit forCustomValueUserStyleSetting
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
toGlesRenderer
&GlesRenderer2
which allows you to set theEGL14.EGL_CONTEXT_CLIENT_VERSION
passed toEGL14.eglCreateContext
. ( I2a83e ) - We've migrated watch face libs over to
androidx.core.util.Consumer
instead ofjava.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-stateIntDef
. ( Ief2f7 ) - For android T we've introduced
ComplicationRequest.isForSafeWatchFace
which is intended for OEM use and it requirescom.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 forCustomValueUserStyleSetting
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 oneComplicationSlotsUserStyleSetting
in a hierarchy. Only oneComplicationSlotsUserStyleSetting
will be active, based on the user's style selections.We're improving screen reader support for
ListOption
andComplicationSlotsOption
by adding ascreenReaderName
field, note prior to android T this field will be ignored by companion editors.
تغییرات API
- We've added a new optional
screenReaderName
field toListOption
andComplicationSlotsOption
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 functionfindComplicationSlotsOptionForUserStyle
toUserStyleSchema
to help find the activeComplicationSlotsOption
if any. ( Ic2b06 ) -
RangedValuesTypes
have been pulled intoRangedValueComplicationData
's companion object and renamed toTYPE_UNDEFINED
,TYPE_RATING
and a newTYPE_PERCENTAGE
has been added. ( I55d02 ) - We've renamed experimental
DynamicFloat
toFloatExpression
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
andWeightedElementsComplicationData
. -
GoalProgressComplicationData
is similar toRangedValueComplicationData
but it's value is allowed to go past the target (forRangedValueComplicationData
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
toRangedValueComplicationData
. - For Android T, We've added
ComplicationPersistencePolicy
andsetCachePolicy
toComplicationData
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 addedComplicationDisplayPolicy
whereDO_NOT_SHOW_WHEN_DEVICE_LOCKED
instructs a compatible watch face to not display the complication when the device is locked. ( Ic9574 )
تغییرات API
-
GoalProgressComplicationData
,WeightedElementsComplicationData
andColorRamp
are no longer experimental. ( Ica9e2 ) -
ComplicationPersistencePolicy
andComplicationDisplayPolicy
are now properly marked as T APIs. ( I31d88 ) - The deprecated
ComplicationSlotOverlay
constructor now hasDeprecationLevel.WARNING
allowing it to be called from java once again. ( Ib308c ) - We've fixed some java compat issues with
ComplicationRequestListener
,CanvasComplication
,ComplicationTapFilter
andInteractiveWatchFaceClient
by annotating them with@JvmDefaultWithCompatibility
( Id94fc ) - We've removed experimental
ProtoLayoutComplicationData
andListComplicationData
. The developer story for these was unclear, we hope to revisit in future. ( I9df05 ) - We've added a
ValueType
back toRangedValueComplicationData
.WeightedElementsComplicationData
now supports a background color. We've removedDiscreteRangedValueComplicationData
because it's functionality is a subset ofWeightedElementsComplicationData
. ( I6446c )
رفع اشکال
- Include the
isForScreenShot
in the equals and hash code. Make sure theonRenderParametersChanged
gets a correctisForScreenshot
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
asrootUserStyleSettings
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 withIntDef
. ( I791f8 )
رفع اشکال
- Close any open on watch editor if
SysUI
dies. IfSysUI
dies and the on watch face editor doesn't close, the watch face could be left in an inconsistent state because the system relies onSysUI
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 addedRenderer.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 supportsSmallImages
.
تغییرات API
- Wallpaper manager can sometimes detach from an engine and make another. We've added a
DisconnectReason
int def and extendedClientDisconnectListener
with a new method which includes aDisconnectReason
, allowing the listener to observe engine detaches. ( I45cce ) - Added two optional parameters
nameResourceId
andscreenReaderResourceId
toComplicationSlotOverlay
constructor ( I157e8 ) - We've added a guava wrapper for the new overload of
getOrCreateInteractiveWatchFaceClient
with aPreviewImageUpdateRequestedListener
. ( Ic31f0 ) - We've added
Renderer.sendPreviewImageNeedsUpdateRequest
which is useful for watch faces that have state outside of theUserStyleSchema
which affects the way they look (eg a watch face with a selectable background image). On the client side we've addedPreviewImageUpdateRequestedListener
as an optional parameter togetOrCreateInteractiveWatchFaceClient
to observe these requests. ( Iff44a ) - We've simplified the API for exposing
WatchFaceColors
, now there's a simple property calledwatchFaceColors
on the Renderer which the watch face can set, this should be updated as necessary in response to any style changes. Instead of usingWallpaperManager
to observe color changes, we've addedOnWatchFaceColorsListener
toInteractiveWatchFaceClient
. ( I490bc ) - We've added a
WatchFaceColors
class which holds the three most prominent watch face colors and added open methodswatchfaceColors
¬ifyWatchFaceColorsChanged
to the Renderer, these allow the system to obtain the colors of the watch face viaWallpaperManager.getWallpaperColors
. ( I3d611 ) -
ShortTextComplicationData
,RangedValueComplicationData
,NoPermissionComplicationData
(and experimentalDiscreteRangedValueComplicationData
,GoalProgressComplicationData
andWeightedElementsComplicationData
) now all supportSmallImages
. If a watch face chooses to render a complication with multiple colors, it now has the option to use a multi-coloredSmallImage
where previously it would have had to use a monochromatic image. ( I257df ) - Refactor
PreviewImageUpdateRequestedListener
to be aConsumer<>
instead ( Ia875d ) - Replace custom Single Abstract Method (SAM) type
OnWatchfaceColorsListener
with generic Java SAM type (Consumer) ( I0c489 ) - We've deprecated the old
getOrCreateInteractiveWatchFaceClient
andlistenableGetOrCreateInteractiveWatchFaceClient
methods that don't specify aPreviewImageUpdateRequestedListener
. ( Iec502 )
رفع اشکال
-
DisconnectReason.BINDER_DIED
has been renamed toDisconnectReason.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 theWatchFaceService.getComplicationSlotInflationFactory
method to be consistent withcreateComplicationSlotsManager
. ( I2ddd2 ) -
UserStyleFlavors
have become non-experimental feature. ( I69cdc ) - We have removed the experimental
ValueType
fromRangedValueComplicationData
and instead introduced experimentalDiscreteRangedValueComplicationData
which is likeRangedValueComplicationData
except for integer range & value. We've also introduced experimentalGoalProgressComplicationData
which is similar toRangedValueComplicationData
except it's for progress towards a goal where min implicitly is zero, and the value is allowed to be larger thantargetValue
. Note for allRangedValue
variants at least one of monochromeImage, text or title must be specified. ( I9590c ) - We removed
boundsWithMargins
fromComplicationSlotState
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 byRangedValueComplicationData
andGoalProgressComplicationData
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 tovalueType
which is an int with a correspondingValueType 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
toRangedValueComplicationData
. Normally complications would be rendered in colors of the watch face's choosing, but sometimes theComplicationDataSource
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 toRangedValueComplicationData
. 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. UnfortunatelypendingInitialComplications
was applied too soon which meant there was a window of time during watch face initialization where complications would still get put onpendingInitialComplications
and be ignored. This has now been fixed. In addition This patch fixes a bug whereComplicationRenderer
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 multiplependingInitialComplications
need to be merged. ( 0d03ba3 )Fix potential deadlock in
InteractiveInstanceManager
wheregetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance
was holding the lock longer than necessary. Usually we'd expectengine.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 theWatchFaceService
, adding arelease()
call fixes this. Also theStateFlows
can retainWatchFaceService
, canceling the underlyingCoroutineScopes
fixes that.( fd48138 )Add timeouts to
awaitDeferredWatchFace
* and fixwatchfaceOverlayStyle
NullPointerException
. In normal circumstances this shouldn't timeout including after fresh install andDirectBoot
scenarios where the CPU load is high. We've also fixed a NPE ifgetWatchfaceOverlayStyle
is called afterclose()
.( 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 theComplicationData
. - Complications are now cached which provides a better experience when switching between watch faces.
سایر تغییرات:
- The
UserStyleSchema
andComplicationSlots
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 complicationBoundingArc
continues, plumbing it through todrawHighlight
although it's not recommended for use at that time.
تغییرات API
- We've added an experimental overload of
drawHighlight
which accepts aBoundingArc
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
incenter_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 withBaseEditorSession.close
being asynchronous is that we release theComplicationDataSourceInfoRetriever
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 toComplicationSlot
and plumbed through toComplicationSlotState
andWatchFaceMetadataClient
. ( 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 aComplicationDataSource's
manifest. ( I1811c )
رفع اشکال
- Fix serialization of
TimeLineEntry
type. We were not serializing theTimeLineEntry
type which meant cachedTimeLineEntries
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 callingonBackgroundThreadGlContextCreated
ifEGL14.eglCreateContext
was called. Fixes another bug where there was a visual glitch in the screenshot caused byverticalFlip
.( 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
) andHeadlessWatchFaceClient.getUserStyleFlavors
throw unchecked RuntimeException instead ofWatchFaceException
. ( I0718a ) -
WatchFaceMetadataClient.WatchFaceException
has been moved out of the class to allow it to be reused. ( I4e869 )
رفع اشکال
-
WatchFaceMetadataClient
will no longer crash when sent partialComplicationSlotBounds
.( 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 inspectingComplicationData.dataSource
, some watch faces may use this to customize complication display. ( I44a73 )
تغییرات API
-
Renderer.CanvasRenderer
andRenderer.GlesRenderer
have been deprecated in favor ofRenderer.CanvasRenderer2
andRenderer.GlesRenderer2
which supportSharedAssets
which are passed to the render methods. For java interop we've introducedListenableCanvasRenderer2
andListenableGlesRenderer2
. ( I31ffa ) - Added
@WatchFaceFlavorsExperimental
ability to define flavors - preconfigured list of styled watchfaces ( I04dd0 ) -
Renderer.sharedAssets
is now a StateFlow and we've removed the unusedRenderer.SharedAssetsFactory
( I12ac5 ) -
UserStyleSchema.userStyleSettings
is not deprecated anymore ( Iba7e3 ) - We've added
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash
which allows aHeadlessWatchFaceClient
to avoid the relatively low overhead of passing the schema over AIDL before computing the digest hash. ( I33597 ) - We've added
isUserStyleSchemaStatic
toWatchFaceMetadataClient
which is true if and only if theUserStyleSchema
can be relied on not to change unless the watch face APK is updated. ( I45a3f ) - We have added
getDigestHash
toUserStyleSchema
which computes a digest hash of the schema. This can be used to efficiently determine if theUserStyleSchema
has changed. ( I2063d ) -
METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED
renamed toMETADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED
( I9ba5d ) -
UserStyleSetting.OnWatchEditorData
has been renamed toUserStyleSetting.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 extendedNoDataComplication
with an optional placeholder ComplicationData and addedComplicationText.PLACEHOLDER
,MonochromaticImage.PLACEHOLDER
,SmallImage.PLACEHOLDER
,PhotoImage.PLACEHOLDER
which are only allowed to be used inside the context of aNoDataComplicationData
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 withWatchState.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 forPendingIntents
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
toWatchFaceException
to give some context to what went wrong. ( I01d15 ) -
ComplicationDataSourceService.onImmediateComplicationRequest
has been removed, insteadComplicationRequest.immediateResponseRequired
has been added to signal that the provider needs to respond quickly (ideally responding in < 100ms). Note this functionality is guarded behind the privilegedcom.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 byListOption
. This allows a hierarchy of styles to be described for use by Editor UIs, the underlying UserStyle is unchanged and is still aMap<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 forCanvasRenderer
(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
andGlesRenderer.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) toComplicationSlot.Builder
and corresponding getters inandroidx.wear.watchface.client.ComplicationSlotState
. This allows the system to fetch the names of ComplicationSlots for use in editors and screen readers. ( If6c6a ) -
WatchfaceMetadataClient.getUserStyleSchema
andgetComplicationSlotMetadataMap
now throwWatchFaceException
instead ofRemoteException
. ( I86f11 ) -
onSynchronousComplicationRequest
and related functions inComplicationDataSourceService
have been renamed toonImmediateComplicationRequest
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 throwRemoteExceptions
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
andComplicationSlots
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. TheWatchFaceMetadataClient
andListenableWatchFaceMetadataClient
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 viaWatchState.watchFaceInstanceId
.ComplicationData
is now being cached to allow complications to be displayed immediately upon loading. SometimesComplicationData
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 happensComplicationData.tapActionLostDueToSerialization
will returntrue
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 updatedComplicationData
with atapAction
as soon as possible.Some
ComplicationData
shouldn't be cached for a long time, to support this we've added a more general featureComplicationDataTimeline
. This can be used to provide a sequence of time-gatedComplicationData
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 methodonComplicationDataTimeline
which you can use to return this data.DefaultComplicationDataSourcePolicy
has been extended so you can specify theComplicationType
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 totapActionLostDueToSerialization
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
towear-complication-data-source
. This can be used to provide a sequence of time-gatedComplicationData
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 methodonComplicationDataTimeline
which you can use to return this data. There's a new kotlin wrapperSuspendingTimelineComplicationDataSourceService
for suspending data source services. ( Idecdc ) - Added
PendingIntentTapListener
andWatchFaceControlClient.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 methodWatchFaceControlClient.hasComplicationCache
intended for OEMs. This may influence the system's strategy for sending complications to a watch face. In addition,ComplicationData
has anisCached
property and it is recommended that cached complications are rendered differently because thetapAction
can not be cached and will benull
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 callingWatchFaceControlClient.createHeadlessWatchFaceClient
. ( I1ff98 ) - Extended
DefaultComplicationDataSourcePolicy
with the ability to set the defaultComplicationTypes
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 callingEditorSession.openComplicationDataSourceChooser()
. ( I6f852 ) - Added
WatchFace.setComplicationDeniedDialogIntent
andsetComplicationRationaleDialogIntent
. 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
andComplicationSlots
can now be defined in XML. This simplifies watch face construction and makesWatchFaceMetadataClient
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 supportsgetPendingIntentForTouchEvent
. ( I0b917 ) -
WatchFaceMetadataClient
andListenableWatchFaceMetadataClient
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 overrideonSynchronousComplicationRequest
. Depending on the nature of the data source, it may also need to overrideonStartSynchronousComplicationRequests
andonStopInteractiveComplicationRequests
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 newwear:watchface:watchface-complications
project. Note this means you can't include this library as well as any previous alpha version ofwear: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 toaddOnWatchFaceReadyListener
andremoveWatchFaceReadyListener
has been renamed toremoveOnWatchFaceReadyListener
. ( I48fea ) - EditorSession
getComplicationsPreviewData
andgetComplicationsDataSourceInfo
are no longer suspend functions, instead they areStateFlow<>
properties whose value is initially null. In ListenableEditorSessiongetListenableComplicationPreviewData
andgetListenableComplicationsProviderInfo
have been removed in favor of the newStateFlow<>
objects from the base class. If you need to listen to changes in java code, consider usingandroidx.lifecycle.FlowLiveDataConversions.asLiveData
to convert toLiveData<>
. ( 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 intoandroidx.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 )