خلفية شاشة ساعة Wear

إنشاء تطبيقات لساعات Wear OS الذكية من Google

ملاحظة: يجب استخدام تنسيق خلفية شاشة الساعة لتثبيت خلفيات شاشة الساعة على الأجهزة التي تم تثبيت نظام التشغيل Wear OS 5 عليها مسبقًا اعتبارًا من 10 تموز (يوليو) 2024، ولجميع خلفيات شاشة الساعة الجديدة التي يتم نشرها على Google Play اعتبارًا من 27 كانون الثاني (يناير) 2025.

يمكنك الاطّلاع على مزيد من المعلومات عن التغييرات الموجَّهة للمستخدمين في مقالة مركز المساعدة هذه.

آخر تعديل الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار التجريبي الأول
18 أيلول (سبتمبر) 2024 1.2.1 - - 1.3.0-alpha04

الإعلان عن التبعيات

لإضافة تبعية على Wear، عليك إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.

أضِف التبعيات للعناصر التي تحتاج إليها في ملف build.gradle ل تطبيقك أو وحدتك:

Groovy

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

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

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

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

Kotlin

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

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

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

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

لمزيد من المعلومات عن العناصر الاعتمادية، اطّلِع على مقالة إضافة عناصر الاعتماد الخاصة بالإنشاء.

ملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا واجهت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية عن طريق النقر على زر النجمة.

إنشاء مشكلة جديدة

اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.

الإصدار 1.3

الإصدار 1.3.0-alpha04

18 أيلول (سبتمبر) 2024

تم إصدار androidx.wear.watchface:watchface-*:1.3.0-alpha04. يحتوي الإصدار 1.3.0-alpha04 على عمليات الربط هذه.

الميزات الجديدة

  • تمت إضافة ميزة "التحميل غير المتزامن" للرموز في UserStyleSettings وUserStyleOptions، ما يؤدي إلى تحسين أداء تحميل خلفيات شاشة الساعة. (Iaf43d)
  • تمت إضافة خيار لالتقاط لقطة شاشة معدَّلة عند تغيير إعدادات النظام (مثلاً في حال تغيير اللغة) من خلال Watchface.setUpdateScreenshotOnConfigurationChange الجديد. يكون هذا الخيار غير مفعَّل بشكل تلقائي. (I765a1)

إصلاح الأخطاء

  • تمت إزالة التحديد اليدوي للوصول إلى واجهات برمجة تطبيقات المنصة الجديدة لأنّ ذلك يحدث تلقائيًا من خلال وضع نماذج لواجهات برمجة التطبيقات عند استخدام 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 على عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • أضفنا 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 على عمليات الربط هذه.

الميزات الجديدة

  • نستخدم الآن مساواة المراجع لمقارنة best و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. يفترض النظام تلقائيًا أنّ خدمة مصدر بيانات المكوّنات الإضافية تتيح الاحتفاظ بنسخة احتياطية من أي بيانات إعدادات، ولكن إذا لم تكن تتيح ذلك، يمكنها إضافة القيمة false إلى إعداد البيانات الوصفية METADATA_KEY_DATA_SOURCE_CONFIG_ACTION، ما سيؤدي إلى وضع علامة على خانة المكوّن الإضافي بأنّها غير مُعدّة. (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 الذي أعاد تسمية تعريفات int حتى لا يكون من الضروري تغيير أي رمز يعتمد على 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، ويمكن لكلاهما استخدام التعبيرات الديناميكية بالإضافة إلى عمليات ربط المنصة التي يتم تعديلها بمعدّل 1 هرتز على أجهزة 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)
  • المزيد من الاستثناءات التي تمّ طرحها من valueOf (I818fe) في التعداد
  • لقد أزلنا renderWatchFaceToSurface واستبدلناه بـ createRemoteWatchFaceView الذي تم إنشاؤه على SurfaceControlViewHost ويسمح للمتصل بتضمين عرض من خلفية شاشة الساعة، ويتم عرض هذا العرض عندما يتصل العميل بـ RemoteWatchFaceViewHost#renderWatchFace. (Ib311d)
  • أضفنا renderWatchFaceToSurface إلى InteractiveWatchFaceClient وHeadlessWatchFaceClient وEditorSession. وعادةً ما يكون هذا الإجراء أفضل أداءً من التصدير إلى ملف بتنسيق bitmap. (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)
  • لقد قرّرنا أن يكون isForSafeWatchFace IntDef ثلاثي الحالات. (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 على هذه المراجعات.

الميزات الجديدة

  • نحن نعمل على إضافة ميزة ربط منصات التطبيقات المعقدة، وهي غير جاهزة للاستخدام بعد، ولكن يُرجى متابعتنا باستمرار.
  • أضفنا ComplicationSlot تنسيق XML لأنواع التعقيدات الجديدة، وهما 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 هرميًا، وأصبح من الممكن الآن استخدام أكثر من ComplicationSlotsUserStyleSetting واحد في التسلسل الهرمي من Android T. سيكون هناك ComplicationSlotsUserStyleSetting واحد فقط نشط، استنادًا إلى اختيارات المستخدم من الأنماط.

  • نعمل على تحسين توافق قارئ الشاشة مع ListOption وComplicationSlotsOption من خلال إضافة حقل screenReaderName، يُرجى العلم أنّه قبل نظام التشغيل Android T، سيتم تجاهل هذا الحقل من قِبل المحرّرين المصاحبين.

تغييرات واجهة برمجة التطبيقات

  • أضفنا حقل 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 على هذه المراجعات.

الميزات الجديدة

  • في نظام التشغيل 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)
  • تم الآن وضع علامة بشكل صحيح على ComplicationPersistencePolicy وComplicationDisplayPolicy كواجهتَي برمجة تطبيقات من النوع T. (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، حيث كان استمرار coroutine في Kotlin يعمل كجذر gc ويحتفظ بنشاط المحرِّر (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 إلى "المشغِّل "، ما يتيح للنظام الحصول على ألوان خلفية شاشة الساعة من خلال 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. ملاحظة لجميع الأسعار المتغيرة RangedValue: يجب تحديد واحد على الأقل من monochromeImage أو text أو title. (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* وأصلِح watchfaceOverlayStyle NullPointerException. في الظروف العادية، من المفترض ألا تنتهي مهلة هذا الإجراء، بما في ذلك بعد التثبيت الجديد وسيناريوهات 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 بشكلٍ غير صحيح على أنّها ذات نوع المضاعفة الرئيسية، ما يؤدي إلى حدوث أخطاء في وقت التشغيل عند الوصول إلى الحقول المطلوبة غير المتوفّرة. (55ffdf5)
  • إصلاح خطأ كان يؤدي إلى إسقاط حقول المخطط الزمني(fb392f5)setComplicationData
  • إصلاح خطأ يؤدي في بعض الأحيان إلى حدوث خطأ في وقت التشغيل(12ca62e)runBlockingWithTracing
  • إصلاح خطأ يؤدي أحيانًا إلى ظهور ClassNotFoundException: android.support.wearable.complications.ComplicationText عند تلقّي شاشة معلومات مصغّرة(217942d9)
  • إصلاح خطأ في GlesRenderer.backgroundThreadInitInternal كان يؤدي إلى استدعاء onBackgroundThreadGlContextCreated فقط إذا تم استدعاء EGL14.eglCreateContext إصلاح خطأ آخر كان يتسبب في حدوث خلل في الرؤية في لقطة الشاشة بسبب verticalFlip.(c674ad2)
  • حلّ مشكلة التحقّق من إصدار WatchFaceService بتنسيق XML، حيث كان يتم تحميله من الحزمة غير الصحيحة (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.getUserStyleFlavors استثناء RuntimeException غير مدقَّق بدلاً من 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 الآن مسارًا متسلسلًا للحالات، وقد أزلنا 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 المخزّنة مؤقتًا والتي انتهت صلاحيتها)، لذلك أضفنا إلى العنصر NoDataComplication عنصر ComplicationData النائب الاختياري وأضفنا العناصر 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)
  • تم تعديل nullability في core وappcompat لمطابقة الإصدار DP2 من 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 وإلى فئات Option عند الاقتضاء. (If1886)
  • أضفنا @JvmOverloads إلى المنشئ ListenableGlesRenderer لتحسين إمكانية التشغيل التفاعلي مع Java. (I2974a)

إصلاح الأخطاء

  • تم وضع علامة على طريقة وضع تصميم ListenableGlesRenderer الآن بشكل صحيح على أنّها @Throws(GlesException::class)، ومن الممكن الآن توسيع هذه الفئة في Java. (Iac6d0)
  • إصلاح خطأ عدم معالجة PhotoImageComplicationData tapAction بشكل صحيح (I1cc30)

الإصدار 1.1.0-alpha02

12 كانون الثاني (يناير) 2022

تم إصدار androidx.wear.watchface:watchface-*:1.1.0-alpha02. يحتوي الإصدار 1.1.0-alpha02 على هذه المراجعات.

الميزات الجديدة

  • للمساعدة في تصحيح الأخطاء والاختبار، تم استبدال طرق hashcode وequals وtoString في ComplicationData والفئات الفرعية ذات الصلة، ما يسهّل التعامل معها.

تغييرات واجهة برمجة التطبيقات

  • تُعرِض طرق 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 يمكنك استخدامها لعرض هذه البيانات.

  • تمّت توسيع نطاق DefaultComplicationDataSourcePolicy لكي تتمكّن من تحديد ComplicationType لمصادر البيانات الأساسية والثانوية.

  • لقد أضفنا ميزة التوافق مع مزوّدي التطبيقات الملحقة المتزامنة التي يتم تعديلها بمعدّل تكرار أعلى من المعتاد، يصل إلى مرّة في الثانية عندما تكون خلفية شاشة الساعة مرئية وغير شاشة الإضاءة السينمائية. ملاحظة: قد يكون استخدام موفّري التطبيقات الملحقة المتزامنة محدودًا بسبب المخاوف المتعلقة بضغط الذاكرة.

  • من المحتمل أن يتم التراجع عن التغييرات التي تم إجراؤها في PendingIntentTapListener لأنّنا حللنا المشكلة الأساسية (لا يمكن لشاشة الساعة تشغيل الأنشطة لمدة 5 ثوانٍ بعد الضغط على زر الصفحة الرئيسية) في إطار العمل بدلاً من ذلك.

تغييرات واجهة برمجة التطبيقات

  • تم تغيير الرمز ComplicationData.isCached إلى tapActionLostDueToSerialization، وهو أكثر فائدة عند تحديد ما إذا كان يجب عرض خانة المكوّن المعقد بشكل مختلف للإشارة إلى أنّه لا يمكن النقر عليها. (I6de2f)
  • تمت إضافة ComplicationDataTimeline إلى wear-complication-data-source. يمكن استخدام هذا الإجراء لتوفير تسلسل من ComplicationData ذات قيود زمنية لإرسالها إلى خلفية شاشة الساعة التي يمكن الاحتفاظ بذاكرتها المؤقتة وتعديلها تلقائيًا. على سبيل المثال، توقعات الطقس لهذا اليوم في أوقات مختلفة أو أحداث متعدّدة قادمة في التقويم تمّت إضافة طريقة جديدة onComplicationDataTimeline إلى ComplicationRequestListener يمكنك استخدامها لعرض هذه البيانات. هناك حزمة جديدة من Kotlin SuspendingTimelineComplicationDataSourceService لإيقاف خدمات مصادر البيانات. (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 على هذه المراجعات.

إصلاح الأخطاء

  • إصلاح خطأ عدم معالجة 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. وتتضمّن هذه المكتبة عددًا من الميزات الجديدة مقارنةً بـ "مكتبة دعم الأجهزة القابلة للارتداء" القديمة.

  • تتيح المكتبة إمكانية استخدام أسلوب المستخدم (مثل تغيير لوحة الألوان وأسلوب عقارب الساعة ومظهر علامات الساعة وما إلى ذلك) مباشرةً (راجِع 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 خطأ بعد الإغلاق (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)
  • لم تعُد دالة EditorSession getComplicationsPreviewData وgetComplicationsDataSourceInfo دالتين معلّقتَين، بل أصبحتا خاصيّتَي StateFlow<> تكون قيمتهما فارغة في البداية. في ListenableEditorSession، تمّت إزالة getListenableComplicationPreviewData وgetListenableComplicationsProviderInfo لصالح عناصر 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 Watchface وComplications المنفصلتَين إلى مجموعة مكتبات androidx.wear.watchface (b25f3c0)
  • تمت إضافة EditorRequest.canWatchFaceSupportHeadlessEditing لإعلام العميل إذا كان محرِّر خلفية شاشة الساعة يتيح التعديل بدون واجهة مستخدم. يُرجى العِلم أنّه ستظهر بعض النتائج السلبية الخاطئة بسبب إضافة الدعم في asop/1756809، ولكن سيتم عرض القيمة الصحيحة لجميع خلفيات الشاشة المستقبلية. (ca55590)
  • يحتوي "المُنشئ" الآن على طريقة dump()‎ التي يمكن إلغاء تحديدها لإضافة بيانات مخصّصة إلى المعلومات التي يتم إنشاؤها بواسطة خدمة نشاط dumpsys shell ABD، وهي WatchFaceService. (95235f9)
  • يحدّد InteractiveWatchFaceClient.addWatchFaceReadyListener الآن المُنفِّذ أولاً. (563ac2f)
  • تمّت إزالة StateFlowCompatHelper. يجب استخدام asLiveData (androidx.lifecycle.asLiveData) بدلاً منها. (bd35d3)
  • لم تعُد سمة CurrentUserStyleRepository.userStyle قابلة للتغيير. (I44889)
  • تمت إعادة تسمية WatchFaceReadyListener ليصبح OnWatchFaceReadyListener. (Ic12a9)

إصلاح الأخطاء

  • InteractiveInstanceManager.deleteInstance لطلب onDestroy. هذا مطلوب لضمان جمع المهملات في InteractiveWatchFaceImpl.(fce4af8، b/199485839)