Wear Watchface
ملاحظة: اعتبارًا من يناير 2026، يجب استخدام "تنسيق خلفية شاشة الساعة" لتثبيت خلفيات شاشة الساعة على جميع أجهزة Wear OS.
يمكنك الاطّلاع على مزيد من المعلومات حول التغييرات التي تظهر للمستخدمين في هذه المقالة في مركز المساعدة.
| آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأولي |
|---|---|---|---|---|
| 17 ديسمبر 2025 | 1.2.1 | - | 1.3.0-beta01 | - |
تحديد الاعتماديات
لإضافة اعتمادية على 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" }
Kotlin
dependencies { // Use to implement wear watchfaces implementation("androidx.wear.watchface:watchface:1.2.1") // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation("androidx.wear.watchface:watchface-editor:1.2.1") // Can use to render complications. // This library is optional and watchfaces may have custom implementation for rendering // complications. implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1" }
لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات الإصدار.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 1.3
الإصدار 1.3.0-beta01
17 ديسمبر 2025
تم طرح androidx.wear.watchface:watchface-*:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 هذه التعديلات.
الميزات الجديدة
- تمت إضافة إمكانية عرض بيانات معاينة ثابتة للعناصر، حيث يمكن لموفّر العناصر تحديد بيانات معاينة ثابتة في ملف البيان، راجِع
androidx.wear.watchface.complications.data.parser.StaticPreviewDataParserلمزيد من التفاصيل. - تمت إضافة فئة الأداة
ComplicationTextFormattingمع إمكانية تنسيق البيانات والوقت بأقل قدر ممكن من التفاصيل، ما يفيد في العناصر الصغيرة التي تكون فيها المساحة محدودة للغاية.
تغييرات واجهة برمجة التطبيقات
- أصبحت السمة التجريبية
Renderer.watchfaceColorsخاصة الآن. لا تزال هناك أدوات وصول عامة لهذه السمة. (Ifdf60، b/409363281)
إصلاح الأخطاء
- تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP. (I48968، b/407632515)
الإصدار 1.3.0-alpha07
23 أبريل 2025
تم طرح androidx.wear.watchface:watchface-*:1.3.0-alpha07. يتضمّن الإصدار 1.3.0-alpha07 هذه التعديلات.
الميزات الجديدة
- لقد كان من الممكن تحديد مخطط UserStyle لخلفية شاشة الساعة لبعض الوقت، كما يمكن تحديد
ColorUserStyleSettingفي XML.
تغييرات واجهة برمجة التطبيقات
- تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP. (Idb6b5)
- تمت إضافة واجهة برمجة التطبيقات Watch Face Push التي تتيح لتطبيق Wear OS تثبيت خلفية شاشة ساعة على ساعة آليًا.
إصلاح الأخطاء
- ننصح مقدّمي بيانات التطبيقات المصغّرة الذين يستخدمون الإصدار 1.3.0-alpha06 بالترقية لأنّه تم إصلاح خطأ تعطل في
ComplicationDataSourceUpdateRequesterفي الإصدار التالي من WearOS.
الإصدار 1.3.0-alpha06
26 مارس 2025
تم طرح androidx.wear.watchface:watchface-*:1.3.0-alpha06. يتضمّن الإصدار 1.3.0-alpha06 هذه التعديلات.
الميزات الجديدة
- تم إيقاف واجهات برمجة التطبيقات الخاصة بخلفيات شاشة الساعة على أجهزة Wear نهائيًا (watchface وwatchface-client وwatchface-client-guava وwatchface-complications-rendering وwatchface-data وwatchface-editor وwatchface-editor-guava وwatchface-style) لصالح تنسيق خلفية شاشة الساعة على Wear، وستتم إزالتها نهائيًا من AndroidX. لن يتم إيقاف واجهات برمجة التطبيقات الخاصة بالإضافات نهائيًا وستبقى متاحة. (Ice960)
- يمكن لواجهات برمجة تطبيقات العناصر المعقّدة الآن التواصل مع
WearSDKمباشرةً، ما يزيد من الكفاءة بسبب انخفاض عدد عمليات نقل البيانات بين العمليات (IPC).
الإصدار 1.3.0-alpha05
15 يناير 2025
تم طرح androidx.wear.watchface:watchface-*:1.3.0-alpha05. يتضمّن الإصدار 1.3.0-alpha05 هذه التعديلات.
الميزات الجديدة
تتيح خلفيات شاشة الساعة عادةً للمستخدم اختيار الألوان باستخدام ListUserStyle. على الرغم من أنّ هذه الطريقة فعّالة، إلا أنّها تتطلّب إرسال الرموز عبر البلوتوث إلى أداة التعديل المصاحبة، ما يجعلها غير فعّالة. لذلك، قدّمنا ColorUserStyleSetting حيث تكون الحمولة عبارة عن قائمة بلون واحد أو أكثر لكل نمط، ما يؤدي إلى تنسيق سلكي أكثر إحكامًا.
أضفنا ميزة موجّهة إلى مصنّعي المعدات الأصلية تتيح لموفّري إضافات مصنّعي المعدات الأصلية إضافة عناصر إضافية إلى ComplicationData لتستخدمها خلفيات شاشة الساعة من مصنّعي المعدات الأصلية.
تغييرات واجهة برمجة التطبيقات
- تتضمّن الفئتان
UserStyleSettingوUserStyleOptionالآن أدوات إنشاء، وهي الطريقة المقترَحة لإنشائهما. (Iacd03) - إتاحة تمرير بيانات إضافية في
ComplicationDataهذه الفئة مخصّصة للاستخدام من قِبل الشركات المصنّعة للأجهزة الأصلية التي تتحكّم في كلّ من مقدّم بيانات التطبيقات المصغّرة وخلفية الساعة التي تتلقّى البيانات. يتطلّب ضبط سمة إضافية الحصول على إذنcom.google.android.wearable.permission.COMPLICATION_EXTRASالمميّز. (I4e3b2) - تتيح خلفيات شاشة الساعة عادةً للمستخدم اختيار الألوان باستخدام
ListUserStyle، مع رمز لكلListOption. بما أنّ مخططاتUserStyleيتم إرسالها عبر البلوتوث، من المهم الحفاظ على حجم المخطط صغيرًا، وهو ما قد يشكّل مشكلة إذا تم توفير عشرات خيارات الألوان بسبب كل هذه الرموز. للمساعدة في ذلك، أضفناColorUserStyleSettingحيث يحتوي الخيار على قائمة بالألوان بدلاً من رمز، ما يجعله أكثر إيجازًا. (Ib542e) - يتطلّب استخدام
ColorUserStyleSettingوColorOptionالمستوى 34 لواجهة برمجة التطبيقات. (I8771d)
إصلاح الأخطاء
- تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن القيم الخالية في JSpecify، وهي تعليقات توضيحية خاصة بالاستخدام. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح:
-Xjspecify-annotations=strict(هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من مترجم Kotlin البرمجي). (Ifd363، b/326456246)
الإصدار 1.3.0-alpha04
18 سبتمبر 2024
تم طرح androidx.wear.watchface:watchface-*:1.3.0-alpha04. يتضمّن الإصدار 1.3.0-alpha04 هذه التعديلات
الميزات الجديدة
- تمت إضافة إمكانية التحميل الكسول للرموز في
UserStyleSettingsوUserStyleOptions، ما يؤدي إلى تحسين أداء تحميل خلفيات شاشة الساعة. (Iaf43d) - تمت إضافة خيار لالتقاط لقطة شاشة معدَّلة كلما تغيّر إعداد النظام (على سبيل المثال، إذا تغيّرت اللغة) من خلال
Watchface.setUpdateScreenshotOnConfigurationChangeالجديد. يكون هذا الخيار غير مفعَّل تلقائيًا. (I765a1)
إصلاح الأخطاء
- تمت إزالة التحديد اليدوي لإمكانية الوصول إلى واجهات برمجة التطبيقات الجديدة للمنصة، لأنّ ذلك يحدث تلقائيًا من خلال تصميم واجهة برمجة التطبيقات عند استخدام R8 مع الإصدار 7.3 أو إصدار أحدث من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (مثل الإصدار 3.3 من R8)، وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون 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 هذه التعديلات
تغييرات واجهة برمجة التطبيقات
- أضفنا
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 هذه التعديلات.
الميزات الجديدة
- نستخدم الآن المساواة المرجعية لمقارنة أفضل و
selectedDataلأنّ عامل المساواة مكلف. (446b00)
تغييرات واجهة برمجة التطبيقات
- أضفنا واجهة برمجة تطبيقات ديناميكية لا تتضمّن خيارًا احتياطيًا لـ
GoalProgressComplicationData. (c33264)
الإصدار 1.3.0-alpha01
7 فبراير 2024
تم طرح androidx.wear.watchface:watchface-*:1.3.0-alpha01. يتضمّن الإصدار 1.3.0-alpha01 هذه التعديلات.
الميزات الجديدة
- يمكن تهيئة
WatchFaceServicesبشكل متزامن، وبالتالي يجب أن تكون بلا حالة، ولإتاحة ذلك، أضفناStatefulWatchFaceServiceالتي يتم فيها تمرير قيمة إضافية يحدّدها المستخدم تم إنشاؤها بواسطةcreateExtra()إلى جميع عمليات الإلغاء التي يتم استدعاؤها أثناء التهيئة. - يتضمّن
GlesRenderer2الآن تحميلًا زائدًا للدالة الإنشائية يتيح لك تحديد قائمة بالسمات التي يجب تجربتها بالتناوب معeglChooseConfig.
تغييرات واجهة برمجة التطبيقات
- يتيح
StatefulWatchFaceServiceالآن إمكانية تجاهلgetComplicationSlotInflationFactoryالذي يتم تمرير البيانات الإضافية المحدّدة من قِبل المستخدم والتي تم إنشاؤها بواسطةcreateExtra()إليه. (I82d9f) - تحتاج بعض خلفيات شاشة الساعة إلى مشاركة البيانات المساعدة التي تم إنشاؤها أثناء
createUserStyleSchemaمع طرق الإعداد الأولية الأخرى. ولأنّه لم يكن هناك بديل أفضل، كان المطوّرون عادةً يجعلونWatchFaceServicesيتضمّن حالة. وهذا أمر خطير لأنّه يمكن إنشاء مثيلات متعددة في الوقت نفسه، ما قد يؤدي إلى حدوث أخطاء. لحلّ هذه المشكلة، قدّمناStatefulWatchFaceServiceوStatefulWatchFaceRuntimeServiceحيث يتم إنشاء نوع محدّد من قِبل المستخدم بواسطةcreateExtra()ويتم تمريره إلى طرق الإنشاء المختلفة كمعلَمة. (If8a99) - أضفنا
getUserStyleFlavorsإلىInteractiveWatchFaceClient، وهو أمر يهمّ مصنّعي المعدات الأصلية بشكل أساسي. (I0f5d8) - يتضمّن
GlesRenderer2الآن تحميلًا زائدًا للدالة الإنشائية يتيح لك تحديد قائمة بالسمات التي يجب تجربتها بالتناوب معeglChooseConfig. على سبيل المثال، يتيح لك ذلك تجربة إعدادات مع ميزة "تنعيم الحواف" أولاً، ثم الرجوع إلى إعدادات بدونها إذا لزم الأمر. (I1ba74) - اعتبارًا من Android U، ستتم إضافة إمكانية استخدام
SystemDataSources.DATA_SOURCE_HEART_RATEإلى WearOS. لا يضمن هذا العنصر دعم عناصرSHORT_TEXTفقط، ولكن يُنصح بأن يقبلComplicationSlotعناصرSMALL_IMAGEأيضًا لأنّ الشركات المصنّعة للمعدات الأصلية قد تختار عرض اختصار لتطبيق الصحة بدلاً من القيمة المباشرة. (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 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح عُطل في Samsung 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، سيتمكّن المصنّعون الأصليون للأجهزة من تحديد ما إذا كان طلب إحدى الإضافات واردًا من خلفية شاشة في القائمة المحدّدة من خلال بيانات
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متاحًا الآن. يُرجى العِلم أنّه تمت إزالة ميزة "الطقس" التلقائية في النظام.
تغييرات واجهة برمجة التطبيقات
- إلغاء التغيير "عرض مصدر بيانات جديد لعناصر الطقس" (I6f335)
الإصدار 1.2.0-beta01
23 أغسطس 2023
تم طرح androidx.wear.watchface:watchface-*:1.2.0-beta01. يتضمّن الإصدار 1.2.0-beta01 هذه التعديلات.
الميزات الجديدة
- بدءًا من Android T، سيتوافق نظام التشغيل WearOS الآن مع أداة نظام الطقس التلقائية.
تغييرات واجهة برمجة التطبيقات
- إضافة نظام احتياطي تلقائي لأحوال الطقس للإضافات (Ia0994)
- تضيف هذه الحزمة
WatchFaceRuntimeServiceوWatchFaceControlClient.createWatchFaceRuntimeControlClientبالإضافة إلى أغلفة guava. تضيف هذه الفئات إمكانية استخدام أوقات تشغيل خلفيات شاشة الساعة، وهي نوع خاص من خلفيات شاشة الساعة يتم تحميل تعريفها من حزمة أخرى. في الوقت الحالي، لا يتيح نظام التشغيل WearOS سوى وقت التشغيل لتنسيق خلفية شاشة Android للساعات. (I2799f) - هذا التصحيح هو متابعة aosp/2636578 حيث نعيد تسمية تعريفات الأعداد الصحيحة حتى لا يحتاج أي رمز يعتمد على
WatchFaceTypeأوCanvasTypeأوTapTypeأوComplicationsSlotBoundsTypeإلى التغيير. (I4098b) - تم تعديل ملفات واجهة برمجة التطبيقات لإضافة تعليقات توضيحية بشأن إيقاف التوافق. (I8e87a، b/287516207)
- يعرض هذا التصحيح الثوابت
WatchFaceTypeفيWatchFaceTypes، والثوابتCanvasTypeفيCanvasTypes، والثوابتTapTypeفيTapTypes، والثوابتComplicationsSlotBoundsTypeفيComplicationsSlotBoundsType. (I3b85a، b/288750666) - إنّ
WatchFace.OverlayStyleلا يُستخدَم كثيرًا ولا يتوافق مع معظم مصنّعي المعدات الأصلية، لذلك سنوقف إتاحته تدريجيًا ونزيله في وقت لاحق. (I7344a)
الإصدار 1.2.0-alpha09
21 حزيران (يونيو) 2023
تم طرح androidx.wear.watchface:watchface-*:1.2.0-alpha09. يتضمّن الإصدار 1.2.0-alpha09 هذه التعديلات.
الميزات الجديدة
- يقبل
RangedValueComplicationData.BuilderالآنDynamicFloat، ويتوفّرDynamicComplicationTextجديد كفئة فرعية منComplicationText، ويمكن لكليهما استخدام التعبيرات الديناميكية بالإضافة إلى عمليات الربط بالمنصة التي يتم تعديلها بمعدّل مرة واحدة في الثانية على أجهزة Wear 4 المتوافقة.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة أنواع ديناميكية للمسافة اليومية والسعرات الحرارية اليومية والطوابق اليومية. أصبحت مفاتيح مصادر بيانات سلامة النظام الأساسي متوفّرة الآن ضمن
PlatformHealthSources.Keys(Ib7637) - نفِّذ
PlatformDataProviderلتوفير معدّل نبضات القلب وعدد الخطوات اليومية. تمت إزالة واجهةSensorGatewayمن واجهة برمجة التطبيقات العامة. (I55b84) - تمت إعادة تسمية
StateEntryValueإلىDynamicDataValue، وتم تعديل واجهات برمجة التطبيقات الخاصة بالحالة لاستخدام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 هذه التعديلات.
الميزات الجديدة
- بدءًا من الإصدار 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لإنشاء خلفيات آمنة لساعات اليد. وهذا يعني أنّ موفّر بيانات التطبيقات المصغّرة قد يختار عرض أنواع مختلفة من البيانات على خلفيات شاشة الساعة الموثوق بها مقارنةً بتلك غير الموثوق بها.
تغييرات واجهة برمجة التطبيقات
- نقل فئة
@Deprecatedإلى الموقع (I882d1، b/271441831) - تم تغيير اسم مَعلمة القيمة لـ
Enum.valueOf(Ia9b89) - المزيد من الاستثناءات التي تم طرحها من enum valueOf (I818fe)
- لقد أزلنا
renderWatchFaceToSurfaceواستبدلناه بـcreateRemoteWatchFaceViewالذي يستند إلى SurfaceControlViewHost ويسمح للمتصل بتضمين عرض من خلفية شاشة الساعة، ويتم عرضه عندما يستدعي العميلRemoteWatchFaceViewHost#renderWatchFace. (Ib311d) - لقد أضفنا
renderWatchFaceToSurfaceإلىInteractiveWatchFaceClientوHeadlessWatchFaceClientوEditorSession. سيكون هذا عادةً أكثر فعالية من العرض إلى صورة نقطية. (Ieacad) - تمت إعادة تسمية
ObservableStateStoreإلىStateStore. (Ieb0e2) - تمت إضافة
DynamicTypeEvaluator.Builderبدلاً من وسيطات الدالة الإنشائية للسماح بالمزيد من الوسيطات الاختيارية، بما في ذلكObservableStateStoreالتي يتم ضبطها الآن تلقائيًا على متجر فارغ. (I6f832) - تمت إعادة ترتيب المَعلمات في
DynamicTypeEvaluator. (Ic1ba4) - تمت إضافة Executor إلى طرق
DynamicTypeEvaluator.bind. (I346ab) - لقد أضفنا طريقة
startEvaluationإلىBoundDynamicTypeلتفعيل التقييم بعد ربط النوع الديناميكي. (I19908) - يمكن لموفّري الإضافات الذين لديهم الإذن
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACEتسجيل بياناتandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPESالوصفية التي تلغيandroid.support.wearable.complications.SUPPORTED_TYPESلإنشاء خلفيات آمنة لشاشة الساعة. (Id1c73) - لقد أعدنا تسمية
CustomValueUserStyleSettings2إلىLargeCustomValueUserStyleSettings. (Ic17ac)
إصلاح الأخطاء
- تمت إزالة
DynamicTypeValueReceiver#onPreUpdate. (I2dc35)
الإصدار 1.2.0-alpha07
22 فبراير 2023
تم طرح androidx.wear.watchface:watchface-*:1.2.0-alpha07. يتضمّن الإصدار 1.2.0-alpha07 هذه التعديلات.
الميزات الجديدة
بدءًا من Android T، سيتمكّن المصنّعون الأصليون للأجهزة من تحديد ما إذا كان طلب إحدى الإضافات واردًا من خلفية شاشة في القائمة المحدّدة من خلال بيانات
android.support.wearable.complications.SAFE_WATCH_FACESالوصفية في بيان موفّر الخدمة من خلالComplicationRequest#isForSafeWatchFace. سيحتاج مقدّم الخدمة إلى إذنcom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACEلتلقّي أي شيء آخر غيرTargetWatchFaceSafety.UNKNOWN.يتوفّر أيضًا من Android T
CustomValueUserStyleSetting2للاستخدام ويمكنه استيعاب ما يصل إلى 12.5 كيلوبايت. كان الحدّ الأقصى السابق لـCustomValueUserStyleSettingهو 1 كيلوبايت. على الرغم من زيادة حدود الحجم، ننصح مطوّري خلفيات شاشة الساعة بالحفاظ على صغر حجم البيانات لأنّه يتم إرسال الإعدادات عبر البلوتوث أثناء التعديل، كما أنّ نطاق البلوتوث محدود.
تغييرات واجهة برمجة التطبيقات
- أضفنا المَعلمة الاختيارية
eglContextAttribListإلىGlesRendererوGlesRenderer2التي تتيح لك ضبطEGL14.EGL_CONTEXT_CLIENT_VERSIONالتي يتم تمريرها إلىEGL14.eglCreateContext. (I2a83e) - لقد نقلنا مكتبات خلفيات شاشة الساعة إلى
androidx.core.util.Consumerبدلاً منjava.util.function.Consumer. (I273f5) - المزيد من الاستثناءات التي تم طرحها من أدوات الوصول إلى خصائص KT (Iff9d9)
- أضفنا
InteractiveWatchFaceClient.isComplicationDisplayPolicySupportedلكي يتمكّن العميل من تحديد ما إذا كان عليه محاكاة التوافق أو لا نيابةً عن خلفيات الشاشة القديمة. (I24c89) - لقد قرّرنا أن يكون
isForSafeWatchFaceIntDefبثلاث حالات. (Ief2f7) - في نظام التشغيل Android T، قدّمنا
ComplicationRequest.isForSafeWatchFaceالمخصّص للاستخدام من قِبل الشركات المصنّعة للأجهزة الأصلية ويتطلّبcom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE. بالنسبة إلى مصادر البيانات في صورة النظام، سيتم عرض القيمة "صحيح" إذا كان وجه الساعة المطلوب ضمن قائمة وجوه الساعات الآمنة التي يحدّدها مصدر البيانات في ملف البيان. (I0cbb6) - في Android 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 هذه التعديلات.
الميزات الجديدة
- نعمل حاليًا على إضافة إمكانية ربط المنصات بعناصر واجهة المستخدم المعقّدة، ولكنّها غير جاهزة للاستخدام بعد، لذا يُرجى متابعتنا باستمرار.
- أضفنا إمكانية استخدام XML
ComplicationSlotمع نوعَي البيانات الجديدَين للعناصر، GOAL_PROGRESS وWEIGHTED_ELEMENTS.
إصلاح الأخطاء
- تم إصلاح تسريب لم يتم فيه إيقاف أداة تعديل خلفية شاشة الساعة بشكلٍ صحيح على أجهزة Samsung. (3b5987)
- تم إصلاح خلل كان يؤدي أحيانًا إلى عدم عرض الإضافات بشكل صحيح عند التبديل بين خلفية شاشة ساعة تتضمّن عدة تطبيقات مفضّلة. (b38ece)
- إصلاح خطأ تسلسل مع perOptionScreenReaderNames يؤدي إلى تعطُّل خلفية شاشة الساعة (e9f466)
الإصدار 1.2.0-alpha05
7 كانون الأول (ديسمبر) 2022
تم طرح androidx.wear.watchface:watchface-*:1.2.0-alpha05. يتضمّن الإصدار 1.2.0-alpha05 هذه التعديلات.
الميزات الجديدة
قبل فترة، أتحنا استخدام
UserStyleSettingsالهرمية، وبدءًا من الإصدار T من نظام التشغيل Android، أصبح من الممكن استخدام أكثر منComplicationSlotsUserStyleSettingواحد في التسلسل الهرمي. سيتم تفعيلComplicationSlotsUserStyleSettingواحد فقط استنادًا إلى اختيارات المستخدم للأسلوب.نعمل على تحسين توافُق قارئ الشاشة مع
ListOptionوComplicationSlotsOptionمن خلال إضافة حقلscreenReaderName، علمًا بأنّ محرّرات التطبيقات المصاحبة ستتجاهل هذا الحقل قبل الإصدار T من نظام التشغيل Android.
تغييرات واجهة برمجة التطبيقات
- أضفنا حقل
screenReaderNameاختياريًا جديدًا إلىListOptionوComplicationSlotsOptionليستخدمه المحرّرون، وسيتم تجاهله من قِبل المحرّرين المرافقين على الأجهزة التي تعمل بإصدار Android الأقدم من T. (I75326) - بدءًا من الإصدار T من نظام التشغيل Android، أصبح من الممكن استخدام عدة
ComplicationSlotsUserStyleSettingsفي تسلسل هرمي للأنماط، شرط ألا يكون أكثر من واحد منها نشطًا في أي وقت. أضفنا دالة مساعدةfindComplicationSlotsOptionForUserStyleإلىUserStyleSchemaللمساعدة في العثور علىComplicationSlotsOptionالنشط، إذا كان هناك أي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 هذه التعديلات.
الميزات الجديدة
- في نظام التشغيل 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)
تغييرات واجهة برمجة التطبيقات
- لم يعُد
GoalProgressComplicationDataوWeightedElementsComplicationDataوColorRampتجريبيًا. (Ica9e2) - تم الآن وضع علامة T API على
ComplicationPersistencePolicyوComplicationDisplayPolicyبشكل صحيح. (I31d88) - أصبح بإمكان طريقة وضع التصميم
ComplicationSlotOverlayالمتوقّفة نهائيًا استخدامDeprecationLevel.WARNING، ما يتيح استدعاءها من Java مرة أخرى. (Ib308c) - لقد حللنا بعض المشاكل المتعلّقة بتوافق Java مع
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 هذه التعديلات.
الميزات الجديدة
- لم تتم إضافة أي ميزات جديدة، ولكن أصلحنا بعض الأخطاء في أداة تعديل خلفية شاشة الساعة.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
UserStyleSchema.userStyleSettingsنهائيًا لأنّrootUserStyleSettingsأصبحت غير تجريبية (Ie96e3) - إزالة
rootUserStyleSettingsمن الإصدار التجريبي (I8d6b3) - لقد صنّفنا
WatchFaceColorsعلى أنّه تجريبي لأنّه غير متوافق مع جميع الأنظمة (I6d75d) - عرِّض
DisconnectReasonsفي واجهة برمجة التطبيقات العامة لكي تعمل معIntDef. (I791f8)
إصلاح الأخطاء
- إغلاق أي محرِّر مفتوح على الساعة في حال توقّف
SysUIعن العمل إذا توقّفSysUIعن العمل ولم يتم إغلاق أداة تعديل خلفية شاشة الساعة، قد تظل خلفية شاشة الساعة في حالة غير متسقة لأنّ النظام يعتمد علىSysUIللاحتفاظ بأي تغييرات في نمط المستخدم.(ba762a - إصلاح تسريب الذاكرة في
ComplicationDataSourceInfoRetriever، حيث كان استمرار روتين فرعي في Kotlin يعمل كجذر لعملية جمع البيانات غير المستخدَمة ويحتفظ بنشاط المحرِّر.(33ee06)
الإصدار 1.2.0-alpha02
21 سبتمبر 2022
تم طرح androidx.wear.watchface:watchface-*:1.2.0-alpha02. يتضمّن الإصدار 1.2.0-alpha02 هذه التعديلات.
الميزات الجديدة
تتضمّن بعض خلفيات شاشة الساعة إعدادات خارج
UserStyleتؤثر في مظهرها (مثل اختيار صورة خلفية). أضفناRenderer.sendPreviewImageNeedsUpdateRequestالذي يتيح لخلفية شاشة الساعة طلب صورة معاينة معدَّلة. يُرجى العِلم أنّ هذه الميزة تتطلّب تحديثًا متوافقًا للنظام كي تعمل.أضفنا أيضًا واجهة برمجة تطبيقات لخلفيات شاشة الساعة لعرض ألوانها على النظام الذي يمكنه اختيار لوحة الألوان استنادًا إلى ذلك. ملاحظة: تم جعل هذه الميزة تجريبية في تصحيح لاحق.
يتوافق كل نوع تقريبًا من
ComplicationDataالآن معSmallImages.
تغييرات واجهة برمجة التطبيقات
- في بعض الأحيان، يمكن أن تنفصل أداة إدارة الخلفيات عن محرك وتنشئ محركًا آخر. أضفنا تعريفًا جديدًا للعدد الصحيح
DisconnectReasonووسّعناClientDisconnectListenerبطريقة جديدة تتضمّنDisconnectReason، ما يسمح للمستمع بمراقبة عمليات فصل المحرّك. (I45cce) - تمّت إضافة مَعلمتَين اختياريتَين
nameResourceIdوscreenReaderResourceIdإلى الدالة الإنشائيةComplicationSlotOverlay(I157e8) - أضفنا برنامج تضمين Guava إلى التحميل الزائد الجديد لـ
getOrCreateInteractiveWatchFaceClientمعPreviewImageUpdateRequestedListener. (Ic31f0) - أضفنا
Renderer.sendPreviewImageNeedsUpdateRequest، وهو مفيد لخلفيات شاشة الساعة التي تتضمّن حالة خارجUserStyleSchemaتؤثّر في طريقة عرضها (مثل خلفية شاشة ساعة تتضمّن صورة خلفية قابلة للاختيار). على مستوى العميل، أضفناPreviewImageUpdateRequestedListenerكمعلَمة اختيارية إلىgetOrCreateInteractiveWatchFaceClientلمراقبة هذه الطلبات. (Iff44a) - لقد بسّطنا واجهة برمجة التطبيقات لعرض
WatchFaceColors، وأصبح هناك الآن سمة بسيطة تُسمىwatchFaceColorsفي أداة العرض يمكن لخلفية شاشة الساعة ضبطها، ويجب تعديلها حسب الحاجة استجابةً لأي تغييرات في الأسلوب. بدلاً من استخدامWallpaperManagerلمراقبة تغييرات الألوان، أضفناOnWatchFaceColorsListenerإلىInteractiveWatchFaceClient. (I490bc) - أضفنا الفئة
WatchFaceColorsالتي تتضمّن ثلاثة من أبرز ألوان خلفية شاشة الساعة، كما أضفنا الطريقتَين المفتوحتَينwatchfaceColorsوnotifyWatchFaceColorsChangedإلى Renderer، ما يتيح للنظام الحصول على ألوان خلفية شاشة الساعة من خلالWallpaperManager.getWallpaperColors. (I3d611) - تتوافق الآن الإصدارات
ShortTextComplicationDataوRangedValueComplicationDataوNoPermissionComplicationData(والإصدارات التجريبيةDiscreteRangedValueComplicationDataوGoalProgressComplicationDataوWeightedElementsComplicationData) معSmallImages. إذا اختار خلفية شاشة ساعة عرض إحدى الإضافات بألوان متعددة، يمكنها الآن استخدامSmallImageمتعدد الألوان، بينما كان عليها في السابق استخدام صورة أحادية اللون. (I257df) - إعادة هيكلة
PreviewImageUpdateRequestedListenerليكونConsumer<>بدلاً من ذلك (Ia875d) - استبدال نوع طريقة التجريد الفردية (SAM) المخصّص
OnWatchfaceColorsListenerبنوع Java SAM العام (المستهلك) (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 هذه التعديلات.
الميزات الجديدة
- أضفنا دعمًا تجريبيًا لتنسيقات جديدة مختلفة للعناصر. هذه ميزة قيد التطوير النشط، وقد تتغير هذه التنسيقات الجديدة بدون إشعار، ولا تتوفّر حاليًا أيّ إمكانية عرض من
CanvasComplicationDrawable. - أضفنا أيضًا هوامش اختيارية إلى خانات الإضافات التي تسهّل النقر على الإضافات الصغيرة.
تغييرات واجهة برمجة التطبيقات
- أصبح صف
BoundingArcالتجريبي غير قابل للتغيير. (If624a) - قد يكون من الصعب النقر على المضاعفات الصغيرة. للمساعدة في الحدّ من هذه المشكلة، أتحنا استخدام الهوامش التي تزيد من مساحة النقر بدون التأثير في العرض. ما لم يتم تحديد ذلك (إما في الرمز أو عبر XML)، فإنّ
ComplciationSlotsلها هوامش بحجم صفر. (I14089) - تم تغيير توقيع
getComplicationSlotInflationFactory(CurrentUserStyleRepository)لعرض مثيل غير فارغ من المصنع. كان من الخطأ عرض قيمة فارغة من قبل، لذا فإنّ هذا التغيير يوضّح عقد واجهة برمجة التطبيقات. (I0fcc0) - أضفنا وسيطة
currentUserStyleRepositoryإلى الطريقةWatchFaceService.getComplicationSlotInflationFactoryلتحقيق الاتساق معcreateComplicationSlotsManager. (I2ddd2) - أصبحت ميزة "
UserStyleFlavors" غير تجريبية. (I69cdc) - لقد أزلنا
ValueTypeالتجريبية منRangedValueComplicationDataواستبدلناها بـDiscreteRangedValueComplicationDataالتجريبية التي تشبهRangedValueComplicationDataباستثناء نطاق الأعداد الصحيحة وقيمتها. لقد أضفنا أيضًاGoalProgressComplicationDataالتجريبية التي تشبهRangedValueComplicationData، ولكنها مخصّصة لإظهار مستوى التقدّم نحو تحقيق هدف معيّن حيث يكون الحد الأدنى ضمنيًا هو صفر، ويُسمح بأن تكون القيمة أكبر منtargetValue. ملاحظة: يجب تحديد واحد على الأقل من monochromeImage أو text أو title لجميع أشكالRangedValue. (I9590c) - لقد أزلنا
boundsWithMarginsمنComplicationSlotStateلأنّ برامج النظام لا تتضمّن حالة استخدام له. (I42e26) - أضفنا دعمًا تجريبيًا لـ
WeightedElementsComplicationDataالذي يتألف من مجموعة من العناصر (أزواج من الوزن واللون) بالإضافة إلى نص/عنوان/صورة اختياريين. قد يتم عرضها على شكل رسم بياني دائري يجب أن تكون فيه الألوان ذات دلالة حسب السياق، لأنّه عادةً ما لا يتوفّر مساحة في التطبيق المصغّر لعرض التصنيفات. (I87eea) - تتيح لك السمة التجريبية
ColorRampsالتي تستخدمهاRangedValueComplicationDataوGoalProgressComplicationDataاختياريًا الآن تحديد تسلسل يصل إلى سبعة ألوان وعلامة تشير إلى ما إذا كان يجب أن يتم التوسيط بسلاسة بين الألوان أو ما إذا كان يجب عرض خطوات ثابتة متساوية الحجم من اللون. (I9f5bf) - تم تغيير
RangedValueComplicationData.drawSegmentedإلىvalueTypeوهو عدد صحيح معValueType IntDefمطابق يوفّر معنى دلاليًا للقيمة المحدودة ويمكن أن يستخدمه عارض العناصر المعقّدة للتأثير في التصميم. (I0616b) - أضفنا دعمًا تجريبيًا للرمز الاختياري
ColorRangesإلىRangedValueComplicationData. عادةً ما يتم عرض الإضافات بألوان من اختيار خلفية شاشة الساعة، ولكن في بعض الأحيان يكون من الأفضل أن يحدّدComplicationDataSourceالألوان، مثلاً عندما يكون لها معنى دلالي معيّن. على سبيل المثال، من الأحمر إلى الأزرق لدرجة الحرارة. (I5153a) - أضفنا تلميحًا تجريبيًا
drawSegmentedإلىRangedValueComplicationData. يشير ذلك إلى أدوات العرض لرسم مؤشر القيمة المحدودة بنطاق باستخدام الأقسام، حيث يساوي قسم واحد وحدة واحدة. (I7d7c1)
إصلاح الأخطاء
- أضفنا إمكانية تحديد
ComplicationSlotBoundsبالنسبة إلى نظام إحداثيات شاشة محدّد مسبقًا. (I0985d)
الإصدار 1.1
الإصدار 1.1.1
10 أغسطس 2022
تم طرح androidx.wear.watchface:watchface-*:1.1.1. يتضمّن الإصدار 1.1.1 هذه التعديلات.
- هذا الإصدار مخصّص لإصلاح الأخطاء، وننصح بشدة مستخدمي الإصدار 1.1.0 بالترقية.
إصلاح الأخطاء
تتم تهيئة خلفية شاشة الساعة بشكل غير متزامن، وإذا تم تلقّي إضافة قبل أن تصبح خلفية شاشة الساعة جاهزة، يتم وضعها في قائمة
pendingInitialComplicationsويتم تطبيقها لاحقًا. للأسف، تم تطبيقpendingInitialComplicationsمبكرًا جدًا، ما يعني وجود فترة زمنية أثناء عملية إعداد خلفية شاشة الساعة يتم فيها وضع الإضافات علىpendingInitialComplicationsوتجاهلها. تم إصلاح هذه المشكلة الآن. بالإضافة إلى ذلك، يعمل هذا التصحيح على إصلاح خطأ كان يتسبب في محاولةComplicationRendererتحميل العناصر النائبة بشكل غير متزامن، ما كان يؤدي إلى تعذُّر تحديث الرسم البياني للتجميع. وأخيرًا، يعمل هذا التصحيح على إصلاح خطأ نظري محتمل حيث يجب دمج عدةpendingInitialComplications. (0d03ba3)تم إصلاح مشكلة محتملة في
InteractiveInstanceManagerحيث كانgetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstanceيحتفظ بالقفل لمدة أطول من اللازم. نتوقّع عادةً أن تكون عمليةengine.setUserStyleسريعة، ولكن إذا لم تكن كذلك لسبب ما، قد ينتهي بنا الأمر إلى حدوث توقّف تام أو خطأ ANR. تنقل هذه الحزمة العمل غير الضروري خارج القفل، ما يزيل احتمال حدوث توقّف تام.(5a2adca)تم إصلاح عدّة مشاكل كانت تحتفظ بـ
WatchFaceService. يمكن أن يحتفظ WakeLock أحيانًا بـWatchFaceService، وتؤدي إضافة طلبrelease()إلى حلّ هذه المشكلة. يمكن أن تحتفظStateFlowsأيضًا بـWatchFaceService، ويؤدي إلغاءCoroutineScopesالأساسي إلى حلّ هذه المشكلة.(fd48138)إضافة مهلات إلى
awaitDeferredWatchFace* وإصلاحwatchfaceOverlayStyleNullPointerExceptionفي الظروف العادية، من المفترض ألا تنتهي مهلة هذا الإجراء، حتى بعد التثبيت الجديد وسيناريوهاتDirectBootالتي يكون فيها الحِمل على وحدة المعالجة المركزية مرتفعًا. تم أيضًا إصلاح خطأ NPE في حال تم استدعاءgetWatchfaceOverlayStyleبعدclose().(a4c3a5a)
الإصدار 1.1.0
15 يونيو 2022
تم طرح androidx.wear.watchface:watchface-*:1.1.0. يتضمّن الإصدار 1.1.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.0.0
تحسين التعديل:
- أضفنا إمكانية استخدام المخططات الهرمية، ما يسمح لواجهات المستخدم الخاصة بالمحرّر بتسجيل تسلسل هرمي للأنماط. يمكنك الآن تحديد رموز منفصلة لاستخدامها في محرّرات خلفية شاشة الساعة والتطبيقات المصاحبة.
- تتوفّر إمكانية الموافقة على استخدام عدة مثيلات لخلفية شاشة الساعة، ويكون لكل مثيل رقم تعريف فريد متاح على جميع مساحات عرض واجهات برمجة التطبيقات.
- يمكنك الآن تحديد أسماء يمكن للمستخدم قراءتها لـ
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 هذه التعديلات.
الميزات الجديدة
- أجرينا بعض التعديلات على سهولة الاستخدام في ما يتعلّق بتوافق XML مع خلفيات شاشة الساعة، ما يسهّل تحديد
ComplicationSlotBoundsويتيح استخدام المراجع. تستمر تجربة إضافة بيانات معقّدة على حافة الشاشةBoundingArc، ويتم نقلها إلىdrawHighlight، مع أنّه لا يُنصح باستخدامها في ذلك الوقت.
تغييرات واجهة برمجة التطبيقات
- أضفنا حمولة زائدة تجريبية من
drawHighlightتقبل المَعلمةBoundingArc. (I705f8) - يتيح ملف 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، وهي غير جاهزة للاستخدام بعد، ولكن يُرجى متابعة هذه المساحة.
تغييرات واجهة برمجة التطبيقات
- لقد أضفنا
BoundingArc، وهي فئة تجريبية تصف شكل فتحة الإضافة على الحافة. تمت إضافة ذلك إلىComplicationSlotودمجه فيComplicationSlotStateوWatchFaceMetadataClient. (I61a40) - أضفنا إمكانية نقل الإعدادات في ملف XML الخاص بـ
UserStyleSetting. تتيح لك هذه الميزة تقليل التفاصيل ومشاركة أحد الإعدادات بين خلفيات شاشة الساعة. (Ief841) - أضفنا نوعَين تجريبيَين جديدَين من
ComplicationData:ListComplicationDataوProtoLayoutComplicationData. في الوقت الحالي، لا تتوفّر إمكانية عرض أيّ من هذين النوعين، ولا يتعرّف WearOS حاليًا على هذين النوعين إذا تمت إضافتهما إلى بيانComplicationDataSource's. (I1811c)
إصلاح الأخطاء
- إصلاح تسلسل النوع
TimeLineEntryلم نكن نُسلسل النوعTimeLineEntry، ما يعني أنّه سيتم تفسيرTimeLineEntriesالمخزّنة مؤقتًا من النوع NoData بشكلٍ غير صحيح على أنّها تتضمّن نوع المضاعفة الرئيسية، ما يؤدي إلى أخطاء NPE عند الوصول إلى الحقول المطلوبة غير المتوفّرة. (55ffdf5) - إصلاح الخطأ الذي كان يؤدي إلى حذف
setComplicationDataحقول المخطّط الزمني(fb392f5) - إصلاح الخلل الذي كان يؤدي في بعض الأحيان إلى حدوث خطأ NPE(12ca62e) عند استخدام
runBlockingWithTracing - تم إصلاح الخطأ الذي يؤدي أحيانًا إلى ظهور
ClassNotFoundException: android.support.wearable.complications.ComplicationTextعند تلقّي إحدى الإضافات.(217942d9) - إصلاح خطأ في
GlesRenderer.backgroundThreadInitInternalحيث كان يتم استدعاءonBackgroundThreadGlContextCreatedفقط إذا تم استدعاءEGL14.eglCreateContext. تم إصلاح خطأ آخر تسبّب في حدوث خلل مرئي في لقطة الشاشة بسببverticalFlip.(c674ad2) - تم إصلاح عملية التحقّق من إصدار ملف XML
WatchFaceService، إذ كان يتم التحميل من الحزمة غير الصحيحة.(dfa06f3) - يستخدم تنسيق السلك الخاص بالعناصر النائبة الآن حزمة داخلية. لا نريد أن تتسبّب العناصر النائبة في إيقاف خلفيات الشاشة الحالية التي قد تستخدم السمة المخفية a.s.w.c.ComplicationData. في السابق، كان تنسيق
NoDataComplicationالبيانات المخزّنة يتضمّن العنصر النائب في الحقول العادية (وهو أمر إشكالي لأنّ خلفيات شاشة الساعة القديمة كانت تعرض سلسلة العنصر النائب، وهو أمر غير مقصود)، ولكننا نستخدم الآن حزمة داخلية لعزل هذا العنصر بالكامل.(d5e7bd2)
الإصدار 1.1.0-beta01
20 أبريل 2022
تم طرح androidx.wear.watchface:watchface-*:1.1.0-beta01. يتضمّن الإصدار 1.1.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تُطلق الآن طرق
WatchFaceMetadataClient(getUserStyleSchemaوgetComplicationSlotMetadataMapوgetUserStyleFlavors) وHeadlessWatchFaceClient.getUserStyleFlavorsRuntimeException غير معالَج بدلاً منWatchFaceException. (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من خلال فحصComplicationData.dataSource، وقد تستخدم بعض خلفيات شاشة الساعة هذه الميزة لتخصيص عرض البيانات. (I44a73)
تغييرات واجهة برمجة التطبيقات
- تم إيقاف العمل بـ
Renderer.CanvasRendererوRenderer.GlesRendererنهائيًا واستبدالهما بـRenderer.CanvasRenderer2وRenderer.GlesRenderer2اللذين يتيحان استخدامSharedAssetsالذي يتم تمريره إلى طرق العرض. بالنسبة إلى إمكانية التشغيل التفاعلي مع Java، قدّمناListenableCanvasRenderer2وListenableGlesRenderer2. (I31ffa) - تمت إضافة إمكانية
@WatchFaceFlavorsExperimentalتحديد النكهات، وهي قائمة مُعدّة مسبقًا بشاشات ساعات منمّقة (I04dd0) - أصبح
Renderer.sharedAssetsالآن StateFlow، وأزلنا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، وهي تحتوي على بيانات يستخدمها محرِّر خلفية شاشة الساعة فقط. (If3afb)
الإصدار 1.1.0-alpha04
9 مارس 2022
تم طرح androidx.wear.watchface:watchface-*:1.1.0-alpha04. يتضمّن الإصدار 1.1.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- قد لا تتوفّر
ComplicationDataمحدّثة دائمًا (مثل ComplicationData من ذاكرة التخزين المؤقت التي انتهت صلاحيتها)، لذا أضفنا إلىNoDataComplicationComplicationData اختيارية للعنصر النائب، وأضفناComplicationText.PLACEHOLDERوMonochromaticImage.PLACEHOLDERوSmallImage.PLACEHOLDERوPhotoImage.PLACEHOLDERالتي يُسمح باستخدامها فقط في سياق العنصر النائبNoDataComplicationData. في حال تحديد هذه العناصر النائبة، يُقترح عرضها باستخدام مربّعات أو أقواس رمادية. (I6285d) - أضفنا
ComplicationData.getNextChangeInstantالذي يخبرك عن "اللقطة الفورية" التالية بعد "اللقطة الفورية" المرجعية التي قد يتغيّر فيها أي حقل من حقول العنصر. يُستخدم هذا المعرّف داخليًا لجدولة اللقطات من أجل تحديثات الإضافات. على سبيل المثال، إذا كانت خلفية شاشة الساعة يتم تعديلها عادةً مرة واحدة في الدقيقة، سيؤدي ضبط إحدى إضافات ساعة الإيقاف إلى تعديلها مرة واحدة في الثانية. (I7ceb2) - يمكن الآن استخدام
EditorSession.watchFaceIdعلى جميع مستويات واجهة برمجة التطبيقات. بالإضافة إلى ذلك، ستكون قيمته متسقة دائمًا معWatchState.watchFaceInstanceId. (I323b9) - لم تعُد واجهة برمجة التطبيقات
getPendingIntentForTouchEventضرورية لأنّه تم إصلاح المشكلة الأساسية في إطار العمل، لذا تمت إزالة جميع واجهات برمجة التطبيقات ذات الصلة. لا تحتاج خلفيات شاشة الساعة إلى اتّخاذ أي إجراءات خاصة لتفعيلPendingIntents، حتى إذا تم الضغط على زر الشاشة الرئيسية مؤخرًا. (I1f2e8) - أضفنا
RendererParameters.isForScreenShotالتي ستكون صحيحة إذا كان العرض مخصّصًا للقطة شاشة. تحتاج بعض خلفيات شاشة الساعة التي تتضمّن رسومات متحركة إلى معرفة ذلك لإجراء تعديلات تضمن تحقيق أفضل النتائج. (I96d99) - أضفنا
WatchFaceExceptionReasonإلىWatchFaceExceptionلتوضيح المشكلة. (I01d15) - تمت إزالة
ComplicationDataSourceService.onImmediateComplicationRequest، وبدلاً من ذلك تمت إضافةComplicationRequest.immediateResponseRequiredللإشارة إلى أنّ مقدّم الخدمة يحتاج إلى الاستجابة بسرعة (يفضّل أن تكون الاستجابة في أقل من 100 ملي ثانية). يُرجى العِلم أنّ هذه الوظيفة محمية بإذنcom.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATEالمميز. (Ie6b23) - تم تعديل إمكانية القيم الخالية في حزمتَي core وappcompat لتتوافق مع الإصدار التجريبي الثاني من Tiramisu (I0cbb7)
إصلاح الأخطاء
- تعطُّل تطبيق خلفية شاشة الساعة مع ظهور استثناء في حال تعذُّر التحقّق من صحة المخطّط (Ia400f)
الإصدار 1.1.0-alpha03
9 فبراير 2022
تم طرح androidx.wear.watchface:watchface-*:1.1.0-alpha03. يتضمّن الإصدار 1.1.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أضفنا دعمًا تجريبيًا لمخططات الأنماط الهرمية. لقد أضفنا سمة جديدة إلى
androidx.wear.watchface.style.UserStyleSetting.Option، وهي childSettings التي تستخدمهاListOptionفقط في البداية. يتيح ذلك وصف تسلسل هرمي للأنماط لاستخدامه من قِبل واجهات مستخدم المحرر، ويبقى UserStyle الأساسي بدون تغيير ويظلMap<String, ByteArray>. (Iaf6f4) - أضفنا
WatchFace.OverlayStyleالذي يسمح لخلفية شاشة الساعة بضبط عرض تراكب حالة النظام. (I8520d) - لقد أضفنا
clearWithBackgroundTintBeforeRenderingHighlightLayerمَعلمة إنشاء اختيارية جديدة لـCanvasRenderer(القيمة التلقائية هي false)، وفي حال ضبطها على true، سيتم محو لوحة الرسم باستخدام لون الخلفية. (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. يتيح ذلك للنظام استرداد أسماء ComplicationSlots لاستخدامها في أدوات التعديل وبرامج قراءة الشاشة. (If6c6a) - تعرض الدالتان
WatchfaceMetadataClient.getUserStyleSchemaوgetComplicationSlotMetadataMapالآن الخطأWatchFaceExceptionبدلاً منRemoteException. (I86f11) - تمت إعادة تسمية الدالة
onSynchronousComplicationRequestوالدوال ذات الصلة فيComplicationDataSourceServiceإلىonImmediateComplicationRequestوما إلى ذلك. (I87ba0) - تتوفّر مساحة أقل بكثير على شاشة محرّرات خلفيات شاشة الساعة مقارنةً بمساحة محرّرات التطبيقات المصاحبة، لذا من المنطقي توفير رموز مختلفة لمحرّرات خلفيات شاشة الساعة. يضيف هذا التصحيح
OnWatchEditorData(الذي يحتوي حاليًا على رمز فقط) إلى جميع UserStyleSettings وفئات الخيارات الخاصة بها حيثما كان ذلك مناسبًا. (If1886) - أضفنا
@JvmOverloadsإلى أداة إنشاء ListenableGlesRenderer لتحسين إمكانية التشغيل التفاعلي مع Java. (I2974a)
إصلاح الأخطاء
- تم الآن وضع علامة
@Throws(GlesException::class)بشكل صحيح على طريقة وضع تصميمListenableGlesRenderer، وأصبح من الممكن توسيع نطاق هذه الفئة في Java. (Iac6d0) - إصلاح الخطأ الذي يتسبّب في عدم التعامل بشكل صحيح مع tapAction في
PhotoImageComplicationData(I1cc30)
الإصدار 1.1.0-alpha02
12 يناير 2022
تم طرح androidx.wear.watchface:watchface-*:1.1.0-alpha02. يتضمّن الإصدار 1.1.0-alpha02 هذه التعديلات.
الميزات الجديدة
- للمساعدة في تصحيح الأخطاء واختبارها، تتضمّن الفئة
ComplicationDataوالفئات الفرعية ذات الصلة الآن طرقًا معدَّلة لرمز التجزئة والمساواة وtoString، ما يسهّل استخدامها.
تغييرات واجهة برمجة التطبيقات
- تُصدر طرق
WatchfaceMetadataClientمرة أخرىRemoteExceptionsعند الاقتضاء، ما يسهّل على رمز البرنامج من جهة العميل رصد الأخطاء من خلفية شاشة الساعة. (I78785) - تتضمّن الفئة
ComplicationDataوالفئات الفرعية الآن hashcode وequals وtoString. (I24bc6)
الإصدار 1.1.0-alpha01
15 كانون الأول (ديسمبر) 2021
تم طرح androidx.wear.watchface:watchface-*:1.1.0-alpha01. يتضمّن الإصدار 1.1.0-alpha01 هذه التعديلات.
الميزات الجديدة
يمكن الآن تحديد
UserStyleSchemaوComplicationSlotsفي XML. ويبسّط ذلك عملية إنشاء خلفية شاشة الساعة. بالإضافة إلى ذلك، تكون طلبات البحثWatchFaceMetadataClientأسرع لأنّها لا تحتاج إلى الربط بالخدمة للحصول على البيانات الوصفية. لم يعُدWatchFaceMetadataClientوListenableWatchFaceMetadataClientتجريبيَين، وسيصبحان جزءًا من واجهة برمجة التطبيقات الثابتة. سيكون النظام قادرًا على إتاحة مثيلات متعددة لخلفية شاشة الساعة بشكل اختياري، ولكل منها خيارات أنماط مختلفة يحدّدها المستخدم. وستظهر هذه الخلفيات في أداة اختيار خلفية شاشة الساعة. لتفعيل هذه الميزة، يجب أن تتضمّن خلفية شاشة الساعة علامة البيانات الوصفية التالية في ملف البيان.<meta-data android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED" android:value="true" />تتضمّن بعض خلفيات شاشة الساعة حالة غير مضمّنة في
UserStyle، ولإتاحة ذلك وعمليات التشغيل المتعدّدة، أصبح معرّف مثيل خلفية شاشة الساعة متاحًا الآن من خلالWatchState.watchFaceInstanceId.يتم الآن تخزين
ComplicationDataمؤقتًا للسماح بعرض البيانات المعقّدة فور تحميلها. يخزّن النظام أحيانًاComplicationDataمؤقتًا في الذاكرة، وتعمل مكتبات خلفيات شاشة الساعة أحيانًا على تسلسلها. عند تسلسل أي tapAction مرتبط، سيتم فقدانه. وفي حال حدوث ذلك، ستعرضComplicationData.tapActionLostDueToSerializationالقيمةtrue، ويجب أن تعرض خلفية الساعة العنصر بشكل مختلف (على سبيل المثال، بلون رمادي أو شبه شفاف) للإشارة إلى أنّه لا يمكن النقر عليه. سيرسل النظامComplicationDataمعدَّلة تتضمّنtapActionفي أقرب وقت ممكن.لا يجب تخزين بعض
ComplicationDataمؤقتًا لفترة طويلة، ولتوفير هذه الإمكانية، أضفنا ميزة أكثر عموميةComplicationDataTimeline. يمكن استخدام ذلك لتوفير تسلسل منComplicationDataمحدد بوقت يتم تسليمه إلى خلفية الساعة التي يمكن تخزينها مؤقتًا وتعديلها تلقائيًا. على سبيل المثال، توقعات الطقس لهذا اليوم في أوقات مختلفة أو أحداث متعددة قادمة في التقويم. تمت إضافة طريقة جديدةonComplicationDataTimelineإلىComplicationRequestListenerيمكنك استخدامها لعرض هذه البيانات.تمّت إضافة إمكانية تحديد
ComplicationTypeلمصادر البيانات الأساسية والثانوية إلىDefaultComplicationDataSourcePolicy.أضفنا إمكانية استخدام أدوات توفير الإضافات المتزامنة التي يتم تعديل الإضافة فيها بمعدّل تكرار أعلى من المعدّل العادي، يصل إلى مرة واحدة في الثانية عندما تكون خلفية شاشة الساعة مرئية وغير محيطة. ملاحظة: قد يكون استخدام مقدّمي البيانات المتزامنة للتعقيدات محدودًا بسبب مخاوف بشأن ضغط الذاكرة.
من المرجّح أن يتم التراجع عن التغييرات في
PendingIntentTapListenerلأنّنا حللنا المشكلة الأساسية (لا يمكن لوجه الساعة تشغيل الأنشطة لمدة 5 ثوانٍ بعد الضغط على زر الشاشة الرئيسية) في إطار العمل بدلاً من ذلك.
تغييرات واجهة برمجة التطبيقات
- تم تغيير قيمة
ComplicationData.isCachedإلىtapActionLostDueToSerialization، وهي أكثر فائدة عند تحديد ما إذا كان يجب عرض خانة البيانات المعقّدة بشكل مختلف للإشارة إلى أنّه لا يمكن النقر عليها. (I6de2f) - تمّت إضافة "
ComplicationDataTimeline" إلى "wear-complication-data-source". يمكن استخدام ذلك لتوفير تسلسل منComplicationDataمحدد بوقت يتم تسليمه إلى خلفية الساعة التي يمكن تخزينها مؤقتًا وتعديلها تلقائيًا. على سبيل المثال، توقعات الطقس لهذا اليوم في أوقات مختلفة أو أحداث متعددة قادمة في التقويم. تمت إضافة طريقة جديدةonComplicationDataTimelineإلىComplicationRequestListenerيمكنك استخدامها لعرض هذه البيانات. يتوفّر برنامج تضمين جديد بلغة KotlinSuspendingTimelineComplicationDataSourceServiceلتعليق خدمات مصدر البيانات. (Idecdc) - تمّت إضافة
PendingIntentTapListenerوWatchFaceControlClient.getPendingIntentForTouchEvent. يمكن أن يساعد ذلك في حلّ مشكلة في خلفيات شاشة الساعة التي تحتاج إلى إطلاق أغراض استجابةً للنقرات، حيث يمنع إطار العمل إطلاق أنشطة جديدة لمدة 5 ثوانٍ بعد الضغط على زر الشاشة الرئيسية. (I98074) - تم تقديم ذاكرة تخزين مؤقت
ComplicationDataلكل خلفية شاشة ساعة. والغرض من ذلك هو السماح لخلفية شاشة الساعة بعرض آخر قيم معروفة لبيانات العنصر عند التحميل إلى أن تتاح للنظام فرصة تعديلها. هناك طريقة جديدة في واجهة برمجة التطبيقاتWatchFaceControlClient.hasComplicationCacheمخصّصة لمصنّعي المعدات الأصلية. قد يؤثر ذلك في استراتيجية النظام لإرسال البيانات إلى خلفية الساعة. بالإضافة إلى ذلك، يحتويComplicationDataعلى السمةisCached، ويُنصح بعرض البيانات المخزّنة مؤقتًا بطريقة مختلفة لأنّه لا يمكن تخزينtapActionمؤقتًا وسيتم عرضnullفي البيانات المخزّنة مؤقتًا. (I404b0) - أصبح معرّف مثيل خلفية الساعة متاحًا الآن من خلال
WatchState.watchFaceInstanceId. لن تحتاج معظم تصاميم الساعة إلى استخدام هذا المعرّف، ولكن إذا كانت هناك حالة لكل تصميم ساعة لا يتم تخزينها في المخطط، سيكون هذا هو المفتاح المستخدَم لتحديد مثيل تصميم الساعة. للمساعدة في إتاحة ذلك، يمكنك الآن تقديم رقم تعريف عند الاتصال بـ "WatchFaceControlClient.createHeadlessWatchFaceClient". (I1ff98) - تم توسيع
DefaultComplicationDataSourcePolicyليشمل إمكانية ضبطComplicationTypesالتلقائي لمقدّم الخدمة الأساسي والثانوي ولمقدّم خدمة النظام الاحتياطي. تم إيقافComplicationSlot.defaultDataSourceTypeنهائيًا. (If0ce3) - أصبح
ComplicationSlot.configExtrasقابلاً للتغيير ويمكن تعديله قبل استدعاءEditorSession.openComplicationDataSourceChooser(). (I6f852) - تمّت إضافة
WatchFace.setComplicationDeniedDialogIntentوsetComplicationRationaleDialogIntent. يتم إطلاق هذه الأهداف لعرض مربّع حوار يوضّح السبب قبل طلب أذونات التطبيقات المصغّرة، ومربّع حوار آخر يوضّح أنّه يجب الحصول على إذن التطبيقات المصغّرة عند محاولة تعديل تطبيق مصغّر في حال تم رفض الأذونات (لن يتم فتح أداة اختيار مقدّم الخدمة، لذا يجب عرض مربّع الحوار). (I3a29c) - يمكن الآن تحديد
UserStyleSchemaوComplicationSlotsفي XML. يؤدي ذلك إلى تبسيط عملية إنشاء خلفيات شاشة الساعة وتسريع طلبات البحث عن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 هذه التعديلات.
إصلاح الأخطاء
- إصلاح الخطأ الذي يتسبّب في عدم التعامل بشكل صحيح مع tapAction في
PhotoImageComplicationData(I1cc30)
الإصدار 1.0.0
1 كانون الأول (ديسمبر) 2021
تم طرح androidx.wear.watchface:watchface-*:1.0.0. يتضمّن الإصدار 1.0.0 هذه التعديلات.
الميزات الرئيسية في الإصدار 1.0.0
حزمة androidx.wear.watchface هي المكتبة الجديدة التي يُنصح بها لتطوير خلفيات شاشة الساعة على WearOS. ويتضمّن عددًا من الميزات الجديدة مقارنةً بمكتبة Wearable Support Library القديمة.
- تتيح المكتبة للمستخدمين اختيار الأنماط (مثل تغيير لوحة الألوان ونمط عقارب الساعة وشكل علامات الساعات وما إلى ذلك) بشكل مباشر (راجِع
androidx.wear.watchface.style). أصبح من الأسهل الآن تطوير أداة تعديل لخلفية شاشة الساعة باستخدام androidx.wear.watchface.editor، ويمكن تعديل خلفية شاشة الساعة من تطبيق النظام المرافق بدون الحاجة إلى كتابة أي رمز إضافي. - أفضل الممارسات مضمّنة. أنشأت المكتبة تلقائيًا تصنيفات محتوى قارئ الشاشة للبيانات المعروضة على الشاشة (يمكنك أيضًا إضافة تصنيفاتك الخاصة)، كما ينخفض معدّل عرض اللقطات تلقائيًا عندما تكون البطارية منخفضة ولا يتم شحنها لتحسين عمر البطارية.
- يجب كتابة رمز برمجي أقل لتطوير خلفية شاشة، لا سيما بالنسبة إلى البيانات المعقّدة التي تم نقل الكثير من الرموز النموذجية إلى المكتبة.
إصلاح الأخطاء
- حلّ المشكلة
EditorSession.userStyle.compareAndSet(I6f676) - إصلاح حالات التأخير القصيرة جدًا في خلفية شاشة الساعة (Iffb97)
- إرسال
InteractiveWatchFaceImpl.onDestroyفي سلسلة واجهة المستخدم (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 دائمًا بعد initStyleAndComplications وإلا سنواجه خطر تأخير عملية تهيئة سلسلة تعليمات واجهة المستخدم.(37650ac)
تأكَّد من استدعاء Renderer.onDestroy. في السيناريو الذي تم فيه إنشاء العارض ولكن لم يكتمل تهيئة WF وتم استدعاء Engine.onDestroy، علينا استدعاء Renderer.onDestroy. (f9952dc)
تحسين/إصلاح isBatteryLowAndNotCharging تنقل حزمة التصحيح هذه عملية الإعداد الأولي للمتغيّر isBatteryLowAndNotCharging إلى وقت سابق، ما يعني أنّه يمكن تنفيذها بالتوازي مع createWatchFace. بالإضافة إلى ذلك، نستمع الآن إلى ACTION_POWER_DISCONNECTED. (ddffd80
يجب أن تكون قيمة InteractiveWatchFaceClientImpl.isConnectionAlive هي false بعد الإغلاق (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 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم نقل الفئات في الحزمة
androidx.wear.watchface.complicationsإلى مشروعwear:watchface:watchface-complicationsجديد. يُرجى العِلم أنّ هذا يعني أنّه لا يمكنك تضمين هذه المكتبة بالإضافة إلى أي إصدار أولي سابق منwear:watchface:watchface-complications-dataلأنّك ستتلقّى أخطاء بشأن الفئات المكرّرة. (I97195) - تمت إعادة تسمية Renderer.dump إلى Renderer.onDump وتمت إضافة التعليق التوضيحي @UiThread إليه. (I44845)
- تمت إعادة تسمية "
InteractiveWatchFaceClient.addWatchFaceReadyListener" إلى "addOnWatchFaceReadyListener"، وإعادة تسمية "removeWatchFaceReadyListener" إلى "removeOnWatchFaceReadyListener". (I48fea) - لم يعُد
getComplicationsPreviewDataوgetComplicationsDataSourceInfoدالتَ تعليق في EditorSession، بل أصبحا سمتَينStateFlow<>تكون قيمتهما في البداية فارغة. تمت إزالةgetListenableComplicationPreviewDataوgetListenableComplicationsProviderInfoفي ListenableEditorSession لصالح عناصرStateFlow<>الجديدة من الفئة الأساسية. إذا كنت بحاجة إلى الاستماع إلى التغييرات في رمز Java، ننصحك باستخدامandroidx.lifecycle.FlowLiveDataConversions.asLiveDataللتحويل إلىLiveData<>. (Ic5483)
الإصدار 1.0.0-alpha23
29 سبتمبر 2021
تم طرح androidx.wear.watchface:watchface-*:1.0.0-alpha23. يتضمّن الإصدار 1.0.0-alpha23 هذه التعديلات.
الميزات الجديدة
أصبحت مكتبة خلفيات شاشة الساعة الآن مجموعة مكتبات واحدة، ونتيجةً لذلك، تم نقل المكتبات وعليك تعديل عمليات استيراد 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 |
تغييرات واجهة برمجة التطبيقات
- نقل مكتبتَي
androidx.wearخلفيات شاشة الساعة وعناصر واجهة المستخدم المنفصلتَين إلى مجموعة مكتباتandroidx.wear.watchface(b25f3c0) - تمت إضافة EditorRequest.canWatchFaceSupportHeadlessEditing لإعلام العميل ما إذا كانت أداة تعديل خلفية شاشة الساعة تتيح التعديل بدون واجهة مستخدم. يُرجى العِلم أنّه ستكون هناك بعض النتائج السلبية الخاطئة في هذا الإصدار لأنّه تمت إضافة الدعم في asop/1756809، ومع ذلك، سيعرض القيمة الصحيحة لجميع خلفيات شاشة الساعة المستقبلية. (ca55590)
- يتضمّن Renderer الآن طريقة dump() يمكن إلغاؤها لإضافة بيانات مخصّصة إلى المعلومات التي يتم إنشاؤها من خلال خدمة WatchFaceService في أداة dumpsys الخاصة ببرنامج ADB. (95235f9)
- تحدّد الدالة InteractiveWatchFaceClient.addWatchFaceReadyListener الآن المنفِّذ أولاً. (563ac2f)
- تمت إزالة StateFlowCompatHelper، ويجب استخدام asLiveData (androidx.lifecycle.asLiveData) بدلاً منه. (bd35d3)
- لم يعُد CurrentUserStyleRepository.userStyle قابلاً للتغيير. (I44889)
- تمت إعادة تسمية WatchFaceReadyListener إلى OnWatchFaceReadyListener. (Ic12a9)
إصلاح الأخطاء
- يجب استخدام InteractiveInstanceManager.deleteInstance لاستدعاء onDestroy لضمان جمع البيانات غير الضرورية في InteractiveWatchFaceImpl.(fce4af8، b/199485839)