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

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

ملاحظة: يجب استخدام تنسيق خلفية شاشة الساعة لتطوير خلفيات شاشة الساعة التي سيتم تثبيتها مسبقًا على الأجهزة التي تعمل بنظام التشغيل Wear OS 5 أو الإصدارات الأحدث، وكذلك جميع خلفيات شاشة الساعة الجديدة التي سيتم نشرها على Google Play.

اعتبارًا من يناير 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 API الذي يتيح لتطبيق 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 مباشرةً، ما يزيد من الكفاءة بسبب انخفاض عدد عمليات نقل البيانات بين العمليات.

الإصدار 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). ننصح العملاء الذين لا يستخدمون "مكوّن Android الإضافي لبرنامج Gradle" بالترقية إلى الإصدار 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 هذه التعديلات.

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

  • بدءًا من الإصدار T من نظام التشغيل Android، يمكن لموفّري الإضافات الذين لديهم الإذن المميز 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)
  • More thrown exceptions from 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)
  • لقد قرّرنا أن يكون 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 هذه التعديلات.

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

  • نعمل حاليًا على إضافة إمكانية ربط المنصات بعناصر واجهة المستخدم المعقّدة، ولكن هذه الميزة غير جاهزة للاستخدام بعد، لذا يُرجى متابعتنا باستمرار.
  • أضفنا إمكانية استخدام 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 بنوع طريقة التجريد الفردية (SAM) العام في Java (المستهلك) (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 أو النص أو العنوان لجميع متغيرات 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* وإصلاح 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. يمكن الآن أيضًا استخدام وحدات مختلفة (مثل وحدات البكسل المستقلة عن الكثافة) باستخدام مراجع الموارد. (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 عند استخدام runBlockingWithTracing(12ca62e)
  • تم إصلاح الخطأ الذي يؤدي أحيانًا إلى ظهور 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.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 الآن 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 منتهية الصلاحية والمخزّنة مؤقتًا)، لذا أضفنا إلى 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)
  • تم تعديل إمكانية القيم الخالية في حزمتَي 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 وفئات Option حيثما كان ذلك مناسبًا. (If1886)
  • أضفنا @JvmOverloads إلى أداة إنشاء ListenableGlesRenderer لتحسين إمكانية التشغيل التفاعلي مع Java. (I2974a)

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

  • تم الآن وضع علامة @Throws(GlesException::class) بشكل صحيح على طريقة وضع تصميم ListenableGlesRenderer، وأصبح من الممكن توسيع نطاق هذه الفئة في Java. (Iac6d0)
  • إصلاح الخطأ الذي يتسبّب في عدم التعامل بشكل صحيح مع PhotoImageComplicationData tapAction (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 يمكنك استخدامها لعرض هذه البيانات. يتوفّر برنامج تضمين جديد بلغة 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. ويتضمّن عددًا من الميزات الجديدة مقارنةً بمكتبة 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() يمكن إلغاؤها لإضافة بيانات مخصّصة إلى المعلومات التي يتم إنشاؤها بواسطة خدمة نشاط dumpsys في واجهة ADB‏ WatchFaceService. (95235f9)
  • تحدّد الدالة InteractiveWatchFaceClient.addWatchFaceReadyListener الآن المنفِّذ أولاً. (563ac2f)
  • تمت إزالة StateFlowCompatHelper، ويجب استخدام asLiveData (androidx.lifecycle.asLiveData) بدلاً منه. (bd35d3)
  • لم يعُد CurrentUserStyleRepository.userStyle قابلاً للتغيير. (I44889)
  • تمت إعادة تسمية WatchFaceReadyListener إلى OnWatchFaceReadyListener. (Ic12a9)

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

  • يجب استدعاء InteractiveInstanceManager.deleteInstance إلى onDestroy لضمان جمع البيانات غير الضرورية في InteractiveWatchFaceImpl.(fce4af8، b/199485839)