Wear Watchface

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

ملاحظة: اعتبارًا من يناير 2026، يجب استخدام "تنسيق خلفية شاشة الساعة" لتثبيت خلفيات شاشة الساعة على جميع أجهزة Wear OS.

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

آخر الأخبار الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأولي
‫17 ديسمبر 2025 1.2.1 - 1.3.0-beta01 -

تحديد الاعتماديات

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

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

رائع

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

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

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

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

Kotlin

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

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

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

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

لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات الإصدار.

الملاحظات

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

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

يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.

الإصدار 1.3

الإصدار 1.3.0-beta01

‫17 ديسمبر 2025

تم طرح androidx.wear.watchface:watchface-*:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 هذه التعديلات.

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

  • تمت إضافة إمكانية عرض بيانات معاينة ثابتة للعناصر، حيث يمكن لموفّر العناصر تحديد بيانات معاينة ثابتة في ملف البيان، راجِع androidx.wear.watchface.complications.data.parser.StaticPreviewDataParser لمزيد من التفاصيل.
  • تمت إضافة فئة الأداة ComplicationTextFormatting مع إمكانية تنسيق البيانات والوقت بأقل قدر ممكن من التفاصيل، ما يفيد في العناصر الصغيرة التي تكون فيها المساحة محدودة للغاية.

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

  • أصبحت السمة التجريبية Renderer.watchfaceColors خاصة الآن. لا تزال هناك أدوات وصول عامة لهذه السمة. (Ifdf60، b/409363281)

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

  • تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP. (I48968، b/407632515)

الإصدار 1.3.0-alpha07

‫23 أبريل 2025

تم طرح androidx.wear.watchface:watchface-*:1.3.0-alpha07. يتضمّن الإصدار 1.3.0-alpha07 هذه التعديلات.

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

  • لقد كان من الممكن تحديد مخطط UserStyle لخلفية شاشة الساعة لبعض الوقت، كما يمكن تحديد ColorUserStyleSetting في XML.

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

  • تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP. (Idb6b5)
  • تمت إضافة واجهة برمجة التطبيقات Watch Face Push التي تتيح لتطبيق Wear OS تثبيت خلفية شاشة ساعة على ساعة آليًا.

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

  • ننصح مقدّمي بيانات التطبيقات المصغّرة الذين يستخدمون الإصدار 1.3.0-alpha06 بالترقية لأنّه تم إصلاح خطأ تعطل في ComplicationDataSourceUpdateRequester في الإصدار التالي من WearOS.

الإصدار 1.3.0-alpha06

‫26 مارس 2025

تم طرح androidx.wear.watchface:watchface-*:1.3.0-alpha06. يتضمّن الإصدار 1.3.0-alpha06 هذه التعديلات.

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

  • تم إيقاف واجهات برمجة التطبيقات الخاصة بخلفيات شاشة الساعة على أجهزة Wear نهائيًا (watchface وwatchface-client وwatchface-client-guava وwatchface-complications-rendering وwatchface-data وwatchface-editor وwatchface-editor-guava وwatchface-style) لصالح تنسيق خلفية شاشة الساعة على Wear، وستتم إزالتها نهائيًا من AndroidX. لن يتم إيقاف واجهات برمجة التطبيقات الخاصة بالإضافات نهائيًا وستبقى متاحة. (Ice960)
  • يمكن لواجهات برمجة تطبيقات العناصر المعقّدة الآن التواصل مع WearSDK مباشرةً، ما يزيد من الكفاءة بسبب انخفاض عدد عمليات نقل البيانات بين العمليات (IPC).

الإصدار 1.3.0-alpha05

‫15 يناير 2025

تم طرح androidx.wear.watchface:watchface-*:1.3.0-alpha05. يتضمّن الإصدار 1.3.0-alpha05 هذه التعديلات.

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

تتيح خلفيات شاشة الساعة عادةً للمستخدم اختيار الألوان باستخدام ListUserStyle. على الرغم من أنّ هذه الطريقة فعّالة، إلا أنّها تتطلّب إرسال الرموز عبر البلوتوث إلى أداة التعديل المصاحبة، ما يجعلها غير فعّالة. لذلك، قدّمنا ColorUserStyleSetting حيث تكون الحمولة عبارة عن قائمة بلون واحد أو أكثر لكل نمط، ما يؤدي إلى تنسيق سلكي أكثر إحكامًا.

أضفنا ميزة موجّهة إلى مصنّعي المعدات الأصلية تتيح لموفّري إضافات مصنّعي المعدات الأصلية إضافة عناصر إضافية إلى ComplicationData لتستخدمها خلفيات شاشة الساعة من مصنّعي المعدات الأصلية.

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

  • تتضمّن الفئتان UserStyleSetting وUserStyleOption الآن أدوات إنشاء، وهي الطريقة المقترَحة لإنشائهما. (Iacd03)
  • إتاحة تمرير بيانات إضافية في ComplicationData هذه الفئة مخصّصة للاستخدام من قِبل الشركات المصنّعة للأجهزة الأصلية التي تتحكّم في كلّ من مقدّم بيانات التطبيقات المصغّرة وخلفية الساعة التي تتلقّى البيانات. يتطلّب ضبط سمة إضافية الحصول على إذن com.google.android.wearable.permission.COMPLICATION_EXTRAS المميّز. (I4e3b2)
  • تتيح خلفيات شاشة الساعة عادةً للمستخدم اختيار الألوان باستخدام ListUserStyle، مع رمز لكل ListOption. بما أنّ مخططات UserStyle يتم إرسالها عبر البلوتوث، من المهم الحفاظ على حجم المخطط صغيرًا، وهو ما قد يشكّل مشكلة إذا تم توفير عشرات خيارات الألوان بسبب كل هذه الرموز. للمساعدة في ذلك، أضفنا ColorUserStyleSetting حيث يحتوي الخيار على قائمة بالألوان بدلاً من رمز، ما يجعله أكثر إيجازًا. (Ib542e)
  • يتطلّب استخدام ColorUserStyleSetting وColorOption المستوى 34 لواجهة برمجة التطبيقات. (I8771d)

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

  • تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن القيم الخالية في JSpecify، وهي تعليقات توضيحية خاصة بالاستخدام. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح: -Xjspecify-annotations=strict (هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من مترجم Kotlin البرمجي). (Ifd363، b/326456246)

الإصدار 1.3.0-alpha04

‫18 سبتمبر 2024

تم طرح androidx.wear.watchface:watchface-*:1.3.0-alpha04. يتضمّن الإصدار 1.3.0-alpha04 هذه التعديلات

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

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

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

  • تمت إزالة التحديد اليدوي لإمكانية الوصول إلى واجهات برمجة التطبيقات الجديدة للمنصة، لأنّ ذلك يحدث تلقائيًا من خلال تصميم واجهة برمجة التطبيقات عند استخدام R8 مع الإصدار 7.3 أو إصدار أحدث من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (مثل الإصدار 3.3 من R8)، وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون AGP بالترقية إلى الإصدار 8.1 أو إصدار أحدث من D8. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (Ia60e0، b/345472586)

الإصدار 1.3.0-alpha03

‫17 أبريل 2024

تم طرح androidx.wear.watchface:watchface-*:1.3.0-alpha03. يتضمّن الإصدار 1.3.0-alpha03 هذه التعديلات

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

  • أضفنا EditorSession#setOverrideComplications الذي يضبط مؤقتًا ComplicationData لمثيل خلفية شاشة الساعة الأساسي أثناء التعديل. إذا كانت التغييرات في البيانات المعروضة في التطبيقات المصغّرة تحدث بشكل غير متكرّر، يكون هذا الإجراء أكثر فعالية من تمرير عمليات الإلغاء من خلال EditorSession#renderWatchFaceToBitmap. (I19384)

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

  • في السابق، كان يتم استدعاء selectComplicationDataForInstant إلى toApiComplicationData لأي جداول زمنية، ما يعني أنّ اختبار المساواة المرجعية اللاحق === كان سيفشل دائمًا. وكان هذا يعني إعادة تحميل التطبيقات المصغّرة في كل إطار، ما يؤدي إلى استنزاف البطارية. (717406)

الإصدار 1.3.0-alpha02

‫3 أبريل 2024

تم طرح androidx.wear.watchface:watchface-*:1.3.0-alpha02. يتضمّن الإصدار 1.3.0-alpha02 هذه التعديلات.

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

  • نستخدم الآن المساواة المرجعية لمقارنة أفضل وselectedData لأنّ عامل المساواة مكلف. (446b00)

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

  • أضفنا واجهة برمجة تطبيقات ديناميكية لا تتضمّن خيارًا احتياطيًا لـ GoalProgressComplicationData. (c33264)

الإصدار 1.3.0-alpha01

‫7 فبراير 2024

تم طرح androidx.wear.watchface:watchface-*:1.3.0-alpha01. يتضمّن الإصدار 1.3.0-alpha01 هذه التعديلات.

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

  • يمكن تهيئة WatchFaceServices بشكل متزامن، وبالتالي يجب أن تكون بلا حالة، ولإتاحة ذلك، أضفنا StatefulWatchFaceService التي يتم فيها تمرير قيمة إضافية يحدّدها المستخدم تم إنشاؤها بواسطة createExtra() إلى جميع عمليات الإلغاء التي يتم استدعاؤها أثناء التهيئة.
  • يتضمّن GlesRenderer2 الآن تحميلًا زائدًا للدالة الإنشائية يتيح لك تحديد قائمة بالسمات التي يجب تجربتها بالتناوب مع eglChooseConfig.

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

  • يتيح StatefulWatchFaceService الآن إمكانية تجاهل getComplicationSlotInflationFactory الذي يتم تمرير البيانات الإضافية المحدّدة من قِبل المستخدم والتي تم إنشاؤها بواسطة createExtra() إليه. (I82d9f)
  • تحتاج بعض خلفيات شاشة الساعة إلى مشاركة البيانات المساعدة التي تم إنشاؤها أثناء createUserStyleSchema مع طرق الإعداد الأولية الأخرى. ولأنّه لم يكن هناك بديل أفضل، كان المطوّرون عادةً يجعلون WatchFaceServices يتضمّن حالة. وهذا أمر خطير لأنّه يمكن إنشاء مثيلات متعددة في الوقت نفسه، ما قد يؤدي إلى حدوث أخطاء. لحلّ هذه المشكلة، قدّمنا StatefulWatchFaceService وStatefulWatchFaceRuntimeService حيث يتم إنشاء نوع محدّد من قِبل المستخدم بواسطة createExtra() ويتم تمريره إلى طرق الإنشاء المختلفة كمعلَمة. (If8a99)
  • أضفنا getUserStyleFlavors إلى InteractiveWatchFaceClient، وهو أمر يهمّ مصنّعي المعدات الأصلية بشكل أساسي. (I0f5d8)
  • يتضمّن GlesRenderer2 الآن تحميلًا زائدًا للدالة الإنشائية يتيح لك تحديد قائمة بالسمات التي يجب تجربتها بالتناوب مع eglChooseConfig. على سبيل المثال، يتيح لك ذلك تجربة إعدادات مع ميزة "تنعيم الحواف" أولاً، ثم الرجوع إلى إعدادات بدونها إذا لزم الأمر. (I1ba74)
  • اعتبارًا من Android U، ستتم إضافة إمكانية استخدام SystemDataSources.DATA_SOURCE_HEART_RATE إلى WearOS. لا يضمن هذا العنصر دعم عناصر SHORT_TEXT فقط، ولكن يُنصح بأن يقبل ComplicationSlot عناصر SMALL_IMAGE أيضًا لأنّ الشركات المصنّعة للمعدات الأصلية قد تختار عرض اختصار لتطبيق الصحة بدلاً من القيمة المباشرة. (I34223)
  • أضفنا METADATA_KEY_CONFIG_RESTORE_SUPPORTED الذي يتحكّم، بدءًا من Android U، في ما يحدث عند استعادة النظام من نسخة احتياطية لمصدر بيانات عنصر واجهة مستخدم معقّد يتضمّن METADATA_KEY_DATA_SOURCE_CONFIG_ACTION. يفترض النظام تلقائيًا أنّ خدمة مصدر بيانات العنصر الصغير تتوافق مع النسخ الاحتياطي لأي بيانات إعداد، ولكن إذا لم يكن الأمر كذلك، يمكن إضافة إعداد البيانات الوصفية METADATA_KEY_DATA_SOURCE_CONFIG_ACTION إلى "false"، ما سيؤدي إلى وضع علامة على خانة العنصر الصغير على أنّها غير مضبوطة. (I6c505)

الإصدار 1.2

الإصدار 1.2.1

‫24 يناير 2024

تم طرح androidx.wear.watchface:watchface-*:1.2.1. يتضمّن الإصدار 1.2.1 هذه التعديلات.

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

  • تم إصلاح عُطل في Samsung Galaxy Watch 4 و5 و6. (43f0b0)

الإصدار 1.2.0

‫29 نوفمبر 2023

تم طرح androidx.wear.watchface:watchface-*:1.2.0. يتضمّن الإصدار 1.2.0 هذه التعديلات.

التغييرات المهمة منذ الإصدار 1.1.0

  • أضفنا بعض أنواع البيانات الجديدة التي يمكن استخدامها بدءًا من Android T:
    • GoalProgressComplicationData: تشبه هذه السمة RangedValueComplicationData، ولكنّها مخصّصة للتقدّم نحو تحقيق هدف يكون الحدّ الأدنى فيه ضمنيًا هو صفر، ويُسمح بأن تكون القيمة أكبر من targetValue.
    • WeightedElementsComplicationData الذي يتألف من مجموعة من العناصر (أزواج من الوزن واللون) بالإضافة إلى نص/عنوان/صورة اختياري. قد يتم عرضها على شكل رسم بياني دائري يجب أن تكون فيه الألوان ذات دلالة حسب السياق، لأنّه عادةً ما لا يتوفّر مساحة في التطبيق المصغّر لعرض التصنيفات.
  • أتحنا استخدام ColorRanges الاختياري في RangedValueComplicationData. عادةً ما يتم عرض الإضافات بألوان من اختيار خلفية شاشة الساعة، ولكن في بعض الأحيان يكون من الأفضل وضع ComplicationDataSource لضبط الألوان، مثلاً عندما يكون لها معنى دلالي معيّن. على سبيل المثال، من الأحمر إلى الأزرق لدرجة الحرارة.
  • يتوافق كل نوع تقريبًا من ComplicationData الآن مع SmallImages.
  • أضفنا ComplicationDisplayPolicy حيث يطلب DO_NOT_SHOW_WHEN_DEVICE_LOCKED من خلفية شاشة الساعة المتوافقة عدم عرض الإضافة عندما يكون الجهاز مقفلاً.
  • بدءًا من Android T، سيتمكّن المصنّعون الأصليون للأجهزة من تحديد ما إذا كان طلب إحدى الإضافات واردًا من خلفية شاشة في القائمة المحدّدة من خلال بيانات android.support.wearable.complications.SAFE_WATCH_FACES الوصفية في بيان موفّر الخدمة من خلال ComplicationRequest#isForSafeWatchFace. سيحتاج مقدّم الخدمة إلى إذن com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE لتلقّي أي قيمة أخرى غير TargetWatchFaceSafety.UNKNOWN`.
  • أصبحت ميزة "UserStyleFlavors" غير تجريبية.

الإصدار 1.2.0-rc01

‫18 أكتوبر 2023

تم طرح androidx.wear.watchface:watchface-*:1.2.0-rc01. يتضمّن الإصدار 1.2.0-rc01 هذه التعديلات.

الإصدار ‎1.2.0-beta02

‫6 سبتمبر 2023

تم طرح androidx.wear.watchface:watchface-*:1.2.0-beta02. يتضمّن الإصدار 1.2.0-beta02 هذه التعديلات.

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

  • أصبح SuspendingComplicationDataSourceService#onDestroy متاحًا الآن. يُرجى العِلم أنّه تمت إزالة ميزة "الطقس" التلقائية في النظام.

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

  • إلغاء التغيير "عرض مصدر بيانات جديد لعناصر الطقس" (I6f335)

الإصدار ‎1.2.0-beta01

‫23 أغسطس 2023

تم طرح androidx.wear.watchface:watchface-*:1.2.0-beta01. يتضمّن الإصدار 1.2.0-beta01 هذه التعديلات.

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

  • بدءًا من Android T، سيتوافق نظام التشغيل WearOS الآن مع أداة نظام الطقس التلقائية.

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

  • إضافة نظام احتياطي تلقائي لأحوال الطقس للإضافات (Ia0994)
  • تضيف هذه الحزمة WatchFaceRuntimeService وWatchFaceControlClient.createWatchFaceRuntimeControlClient بالإضافة إلى أغلفة guava. تضيف هذه الفئات إمكانية استخدام أوقات تشغيل خلفيات شاشة الساعة، وهي نوع خاص من خلفيات شاشة الساعة يتم تحميل تعريفها من حزمة أخرى. في الوقت الحالي، لا يتيح نظام التشغيل WearOS سوى وقت التشغيل لتنسيق خلفية شاشة Android للساعات. (I2799f)
  • هذا التصحيح هو متابعة aosp/2636578 حيث نعيد تسمية تعريفات الأعداد الصحيحة حتى لا يحتاج أي رمز يعتمد على WatchFaceType أو CanvasType أو TapType أو ComplicationsSlotBoundsType إلى التغيير. (I4098b)
  • تم تعديل ملفات واجهة برمجة التطبيقات لإضافة تعليقات توضيحية بشأن إيقاف التوافق. (I8e87a، b/287516207)
  • يعرض هذا التصحيح الثوابت WatchFaceType في WatchFaceTypes، والثوابت CanvasType في CanvasTypes، والثوابت TapType في TapTypes، والثوابت ComplicationsSlotBoundsType في ComplicationsSlotBoundsType. (I3b85a، b/288750666)
  • إنّ WatchFace.OverlayStyle لا يُستخدَم كثيرًا ولا يتوافق مع معظم مصنّعي المعدات الأصلية، لذلك سنوقف إتاحته تدريجيًا ونزيله في وقت لاحق. (I7344a)

الإصدار ‎1.2.0-alpha09

‫21 حزيران (يونيو) 2023

تم طرح androidx.wear.watchface:watchface-*:1.2.0-alpha09. يتضمّن الإصدار 1.2.0-alpha09 هذه التعديلات.

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

  • يقبل RangedValueComplicationData.Builder الآن DynamicFloat، ويتوفّر DynamicComplicationText جديد كفئة فرعية من ComplicationText، ويمكن لكليهما استخدام التعبيرات الديناميكية بالإضافة إلى عمليات الربط بالمنصة التي يتم تعديلها بمعدّل مرة واحدة في الثانية على أجهزة Wear 4 المتوافقة.

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

  • تمت إضافة أنواع ديناميكية للمسافة اليومية والسعرات الحرارية اليومية والطوابق اليومية. أصبحت مفاتيح مصادر بيانات سلامة النظام الأساسي متوفّرة الآن ضمن PlatformHealthSources.Keys (Ib7637)
  • نفِّذ PlatformDataProvider لتوفير معدّل نبضات القلب وعدد الخطوات اليومية. تمت إزالة واجهة SensorGateway من واجهة برمجة التطبيقات العامة. (I55b84)
  • تمت إعادة تسمية StateEntryValue إلى DynamicDataValue، وتم تعديل واجهات برمجة التطبيقات الخاصة بالحالة لاستخدام DynamicDataKey. (If1c01)
  • أضِف AppDataKey للوصول إلى حالة التطبيق التي تم إرسالها، وأضِف PlatformDataKey للوصول إلى بيانات النظام الأساسي، وأضِف إمكانية استخدام مساحة الاسم في StateStore. (I7985e)
  • تمت إزالة طرق الدفع enable/disablePlatformSource من حساب DynamicTypeEvaluator. يجب أن يكون المتصل مسؤولاً عن التحديثات. (I78c6d)
  • السماح بوضع حد أقصى لحجم أنواع البيانات المرتبطة (Ie2966)

الإصدار 1.2.0-alpha08

‫19 أبريل 2023

تم طرح androidx.wear.watchface:watchface-*:1.2.0-alpha08. يتضمّن الإصدار 1.2.0-alpha08 هذه التعديلات.

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

  • بدءًا من الإصدار Android T، يمكن لموفّري الإضافات الذين لديهم الامتياز com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE تسجيل البيانات الوصفية androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES التي تتجاهل android.support.wearable.complications.SUPPORTED_TYPES لإنشاء خلفيات آمنة لساعات اليد. وهذا يعني أنّ موفّر بيانات التطبيقات المصغّرة قد يختار عرض أنواع مختلفة من البيانات على خلفيات شاشة الساعة الموثوق بها مقارنةً بتلك غير الموثوق بها.

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

  • نقل فئة @Deprecated إلى الموقع (I882d1، b/271441831)
  • تم تغيير اسم مَعلمة القيمة لـ Enum.valueOf (Ia9b89)
  • المزيد من الاستثناءات التي تم طرحها من enum valueOf (I818fe)
  • لقد أزلنا renderWatchFaceToSurface واستبدلناه بـ createRemoteWatchFaceView الذي يستند إلى SurfaceControlViewHost ويسمح للمتصل بتضمين عرض من خلفية شاشة الساعة، ويتم عرضه عندما يستدعي العميل RemoteWatchFaceViewHost#renderWatchFace. (Ib311d)
  • لقد أضفنا renderWatchFaceToSurface إلى InteractiveWatchFaceClient وHeadlessWatchFaceClient وEditorSession. سيكون هذا عادةً أكثر فعالية من العرض إلى صورة نقطية. (Ieacad)
  • تمت إعادة تسمية ObservableStateStore إلى StateStore. (Ieb0e2)
  • تمت إضافة DynamicTypeEvaluator.Builder بدلاً من وسيطات الدالة الإنشائية للسماح بالمزيد من الوسيطات الاختيارية، بما في ذلك ObservableStateStore التي يتم ضبطها الآن تلقائيًا على متجر فارغ. (I6f832)
  • تمت إعادة ترتيب المَعلمات في DynamicTypeEvaluator. (Ic1ba4)
  • تمت إضافة Executor إلى طرق DynamicTypeEvaluator.bind. (I346ab)
  • لقد أضفنا طريقة startEvaluation إلى BoundDynamicType لتفعيل التقييم بعد ربط النوع الديناميكي. (I19908)
  • يمكن لموفّري الإضافات الذين لديهم الإذن com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE تسجيل بيانات androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES الوصفية التي تلغي android.support.wearable.complications.SUPPORTED_TYPES لإنشاء خلفيات آمنة لشاشة الساعة. (Id1c73)
  • لقد أعدنا تسمية CustomValueUserStyleSettings2 إلى LargeCustomValueUserStyleSettings. (Ic17ac)

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

  • تمت إزالة DynamicTypeValueReceiver#onPreUpdate. (I2dc35)

الإصدار 1.2.0-alpha07

‫22 فبراير 2023

تم طرح androidx.wear.watchface:watchface-*:1.2.0-alpha07. يتضمّن الإصدار 1.2.0-alpha07 هذه التعديلات.

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

  • بدءًا من Android T، سيتمكّن المصنّعون الأصليون للأجهزة من تحديد ما إذا كان طلب إحدى الإضافات واردًا من خلفية شاشة في القائمة المحدّدة من خلال بيانات android.support.wearable.complications.SAFE_WATCH_FACES الوصفية في بيان موفّر الخدمة من خلال ComplicationRequest#isForSafeWatchFace. سيحتاج مقدّم الخدمة إلى إذن com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE لتلقّي أي شيء آخر غير TargetWatchFaceSafety.UNKNOWN.

  • يتوفّر أيضًا من Android T CustomValueUserStyleSetting2 للاستخدام ويمكنه استيعاب ما يصل إلى 12.5 كيلوبايت. كان الحدّ الأقصى السابق لـ CustomValueUserStyleSetting هو 1 كيلوبايت. على الرغم من زيادة حدود الحجم، ننصح مطوّري خلفيات شاشة الساعة بالحفاظ على صغر حجم البيانات لأنّه يتم إرسال الإعدادات عبر البلوتوث أثناء التعديل، كما أنّ نطاق البلوتوث محدود.

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

  • أضفنا المَعلمة الاختيارية eglContextAttribList إلى GlesRenderer وGlesRenderer2 التي تتيح لك ضبط EGL14.EGL_CONTEXT_CLIENT_VERSION التي يتم تمريرها إلى EGL14.eglCreateContext. (I2a83e)
  • لقد نقلنا مكتبات خلفيات شاشة الساعة إلى androidx.core.util.Consumer بدلاً من java.util.function.Consumer. (I273f5)
  • المزيد من الاستثناءات التي تم طرحها من أدوات الوصول إلى خصائص KT (Iff9d9)
  • أضفنا InteractiveWatchFaceClient.isComplicationDisplayPolicySupported لكي يتمكّن العميل من تحديد ما إذا كان عليه محاكاة التوافق أو لا نيابةً عن خلفيات الشاشة القديمة. (I24c89)
  • لقد قرّرنا أن يكون 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 بنوع Java SAM العام (المستهلك) (I0c489)
  • أوقفنا نهائيًا الطريقتَين القديمتَين getOrCreateInteractiveWatchFaceClient وlistenableGetOrCreateInteractiveWatchFaceClient اللتَين لا تحدّدان PreviewImageUpdateRequestedListener. (Iec502)

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

  • تمت إعادة تسمية DisconnectReason.BINDER_DIED إلى DisconnectReason.ENGINE_DIED. (I4eb0e)

الإصدار 1.2.0-alpha01

‫10 أغسطس 2022

تم طرح androidx.wear.watchface:watchface-*:1.2.0-alpha01. يتضمّن الإصدار 1.2.0-alpha01 هذه التعديلات.

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

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

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

  • أصبح صف BoundingArc التجريبي غير قابل للتغيير. (If624a)
  • قد يكون من الصعب النقر على المضاعفات الصغيرة. للمساعدة في الحدّ من هذه المشكلة، أتحنا استخدام الهوامش التي تزيد من مساحة النقر بدون التأثير في العرض. ما لم يتم تحديد ذلك (إما في الرمز أو عبر XML)، فإنّ ComplciationSlots لها هوامش بحجم صفر. (I14089)
  • تم تغيير توقيع getComplicationSlotInflationFactory(CurrentUserStyleRepository) لعرض مثيل غير فارغ من المصنع. كان من الخطأ عرض قيمة فارغة من قبل، لذا فإنّ هذا التغيير يوضّح عقد واجهة برمجة التطبيقات. (I0fcc0)
  • أضفنا وسيطة currentUserStyleRepository إلى الطريقة WatchFaceService.getComplicationSlotInflationFactory لتحقيق الاتساق مع createComplicationSlotsManager. (I2ddd2)
  • أصبحت ميزة "UserStyleFlavors" غير تجريبية. (I69cdc)
  • لقد أزلنا ValueType التجريبية من RangedValueComplicationData واستبدلناها بـ DiscreteRangedValueComplicationData التجريبية التي تشبه RangedValueComplicationData باستثناء نطاق الأعداد الصحيحة وقيمتها. لقد أضفنا أيضًا GoalProgressComplicationData التجريبية التي تشبه RangedValueComplicationData، ولكنها مخصّصة لإظهار مستوى التقدّم نحو تحقيق هدف معيّن حيث يكون الحد الأدنى ضمنيًا هو صفر، ويُسمح بأن تكون القيمة أكبر من targetValue. ملاحظة: يجب تحديد واحد على الأقل من monochromeImage أو text أو title لجميع أشكال RangedValue. (I9590c)
  • لقد أزلنا boundsWithMargins من ComplicationSlotState لأنّ برامج النظام لا تتضمّن حالة استخدام له. (I42e26)
  • أضفنا دعمًا تجريبيًا لـ WeightedElementsComplicationData الذي يتألف من مجموعة من العناصر (أزواج من الوزن واللون) بالإضافة إلى نص/عنوان/صورة اختياريين. قد يتم عرضها على شكل رسم بياني دائري يجب أن تكون فيه الألوان ذات دلالة حسب السياق، لأنّه عادةً ما لا يتوفّر مساحة في التطبيق المصغّر لعرض التصنيفات. (I87eea)
  • تتيح لك السمة التجريبية ColorRamps التي تستخدمها RangedValueComplicationData وGoalProgressComplicationData اختياريًا الآن تحديد تسلسل يصل إلى سبعة ألوان وعلامة تشير إلى ما إذا كان يجب أن يتم التوسيط بسلاسة بين الألوان أو ما إذا كان يجب عرض خطوات ثابتة متساوية الحجم من اللون. (I9f5bf)
  • تم تغيير RangedValueComplicationData.drawSegmented إلى valueType وهو عدد صحيح مع ValueType IntDef مطابق يوفّر معنى دلاليًا للقيمة المحدودة ويمكن أن يستخدمه عارض العناصر المعقّدة للتأثير في التصميم. (I0616b)
  • أضفنا دعمًا تجريبيًا للرمز الاختياري ColorRanges إلى RangedValueComplicationData. عادةً ما يتم عرض الإضافات بألوان من اختيار خلفية شاشة الساعة، ولكن في بعض الأحيان يكون من الأفضل أن يحدّد ComplicationDataSource الألوان، مثلاً عندما يكون لها معنى دلالي معيّن. على سبيل المثال، من الأحمر إلى الأزرق لدرجة الحرارة. (I5153a)
  • أضفنا تلميحًا تجريبيًا drawSegmented إلى RangedValueComplicationData. يشير ذلك إلى أدوات العرض لرسم مؤشر القيمة المحدودة بنطاق باستخدام الأقسام، حيث يساوي قسم واحد وحدة واحدة. (I7d7c1)

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

  • أضفنا إمكانية تحديد ComplicationSlotBounds بالنسبة إلى نظام إحداثيات شاشة محدّد مسبقًا. (I0985d)

الإصدار 1.1

الإصدار 1.1.1

‫10 أغسطس 2022

تم طرح androidx.wear.watchface:watchface-*:1.1.1. يتضمّن الإصدار 1.1.1 هذه التعديلات.

  • هذا الإصدار مخصّص لإصلاح الأخطاء، وننصح بشدة مستخدمي الإصدار 1.1.0 بالترقية.

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

  • تتم تهيئة خلفية شاشة الساعة بشكل غير متزامن، وإذا تم تلقّي إضافة قبل أن تصبح خلفية شاشة الساعة جاهزة، يتم وضعها في قائمة pendingInitialComplications ويتم تطبيقها لاحقًا. للأسف، تم تطبيق pendingInitialComplications مبكرًا جدًا، ما يعني وجود فترة زمنية أثناء عملية إعداد خلفية شاشة الساعة يتم فيها وضع الإضافات على pendingInitialComplications وتجاهلها. تم إصلاح هذه المشكلة الآن. بالإضافة إلى ذلك، يعمل هذا التصحيح على إصلاح خطأ كان يتسبب في محاولة ComplicationRenderer تحميل العناصر النائبة بشكل غير متزامن، ما كان يؤدي إلى تعذُّر تحديث الرسم البياني للتجميع. وأخيرًا، يعمل هذا التصحيح على إصلاح خطأ نظري محتمل حيث يجب دمج عدة pendingInitialComplications. (0d03ba3)

  • تم إصلاح مشكلة محتملة في InteractiveInstanceManager حيث كان getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance يحتفظ بالقفل لمدة أطول من اللازم. نتوقّع عادةً أن تكون عملية engine.setUserStyle سريعة، ولكن إذا لم تكن كذلك لسبب ما، قد ينتهي بنا الأمر إلى حدوث توقّف تام أو خطأ ANR. تنقل هذه الحزمة العمل غير الضروري خارج القفل، ما يزيل احتمال حدوث توقّف تام.(5a2adca)

  • تم إصلاح عدّة مشاكل كانت تحتفظ بـ WatchFaceService. يمكن أن يحتفظ WakeLock أحيانًا بـ WatchFaceService، وتؤدي إضافة طلب release() إلى حلّ هذه المشكلة. يمكن أن تحتفظ StateFlows أيضًا بـ WatchFaceService، ويؤدي إلغاء CoroutineScopes الأساسي إلى حلّ هذه المشكلة.(fd48138)

  • إضافة مهلات إلى awaitDeferredWatchFace* وإصلاح 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 بشكلٍ غير صحيح على أنّها تتضمّن نوع المضاعفة الرئيسية، ما يؤدي إلى أخطاء NPE عند الوصول إلى الحقول المطلوبة غير المتوفّرة. (55ffdf5)
  • إصلاح الخطأ الذي كان يؤدي إلى حذف setComplicationData حقول المخطّط الزمني(fb392f5)
  • إصلاح الخلل الذي كان يؤدي في بعض الأحيان إلى حدوث خطأ NPE(12ca62e) عند استخدام runBlockingWithTracing
  • تم إصلاح الخطأ الذي يؤدي أحيانًا إلى ظهور ClassNotFoundException: android.support.wearable.complications.ComplicationText عند تلقّي إحدى الإضافات.(217942d9)
  • إصلاح خطأ في GlesRenderer.backgroundThreadInitInternal حيث كان يتم استدعاء onBackgroundThreadGlContextCreated فقط إذا تم استدعاء EGL14.eglCreateContext. تم إصلاح خطأ آخر تسبّب في حدوث خلل مرئي في لقطة الشاشة بسبب verticalFlip.(c674ad2)
  • تم إصلاح عملية التحقّق من إصدار ملف XML WatchFaceService، إذ كان يتم التحميل من الحزمة غير الصحيحة.(dfa06f3)
  • يستخدم تنسيق السلك الخاص بالعناصر النائبة الآن حزمة داخلية. لا نريد أن تتسبّب العناصر النائبة في إيقاف خلفيات الشاشة الحالية التي قد تستخدم السمة المخفية a.s.w.c.ComplicationData. في السابق، كان تنسيق NoDataComplication البيانات المخزّنة يتضمّن العنصر النائب في الحقول العادية (وهو أمر إشكالي لأنّ خلفيات شاشة الساعة القديمة كانت تعرض سلسلة العنصر النائب، وهو أمر غير مقصود)، ولكننا نستخدم الآن حزمة داخلية لعزل هذا العنصر بالكامل.(d5e7bd2)

الإصدار ‎1.1.0-beta01

‫20 أبريل 2022

تم طرح androidx.wear.watchface:watchface-*:1.1.0-beta01. يتضمّن الإصدار 1.1.0-beta01 هذه التعديلات.

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

  • تُطلق الآن طرق WatchFaceMetadataClient (getUserStyleSchema وgetComplicationSlotMetadataMap وgetUserStyleFlavors) وHeadlessWatchFaceClient.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 وفئات الخيارات الخاصة بها حيثما كان ذلك مناسبًا. (If1886)
  • أضفنا @JvmOverloads إلى أداة إنشاء ListenableGlesRenderer لتحسين إمكانية التشغيل التفاعلي مع Java. (I2974a)

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

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

الإصدار ‎1.1.0-alpha02

‫12 يناير 2022

تم طرح androidx.wear.watchface:watchface-*:1.1.0-alpha02. يتضمّن الإصدار 1.1.0-alpha02 هذه التعديلات.

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

  • للمساعدة في تصحيح الأخطاء واختبارها، تتضمّن الفئة ComplicationData والفئات الفرعية ذات الصلة الآن طرقًا معدَّلة لرمز التجزئة والمساواة وtoString، ما يسهّل استخدامها.

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

  • تُصدر طرق WatchfaceMetadataClient مرة أخرى RemoteExceptions عند الاقتضاء، ما يسهّل على رمز البرنامج من جهة العميل رصد الأخطاء من خلفية شاشة الساعة. (I78785)
  • تتضمّن الفئة ComplicationData والفئات الفرعية الآن hashcode وequals وtoString. (I24bc6)

الإصدار ‎1.1.0-alpha01

15 كانون الأول (ديسمبر) 2021

تم طرح androidx.wear.watchface:watchface-*:1.1.0-alpha01. يتضمّن الإصدار 1.1.0-alpha01 هذه التعديلات.

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

  • يمكن الآن تحديد UserStyleSchema وComplicationSlots في XML. ويبسّط ذلك عملية إنشاء خلفية شاشة الساعة. بالإضافة إلى ذلك، تكون طلبات البحث WatchFaceMetadataClient أسرع لأنّها لا تحتاج إلى الربط بالخدمة للحصول على البيانات الوصفية. لم يعُد WatchFaceMetadataClient وListenableWatchFaceMetadataClient تجريبيَين، وسيصبحان جزءًا من واجهة برمجة التطبيقات الثابتة. سيكون النظام قادرًا على إتاحة مثيلات متعددة لخلفية شاشة الساعة بشكل اختياري، ولكل منها خيارات أنماط مختلفة يحدّدها المستخدم. وستظهر هذه الخلفيات في أداة اختيار خلفية شاشة الساعة. لتفعيل هذه الميزة، يجب أن تتضمّن خلفية شاشة الساعة علامة البيانات الوصفية التالية في ملف البيان.

        <meta-data
            android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED"
            android:value="true" />
    
  • تتضمّن بعض خلفيات شاشة الساعة حالة غير مضمّنة في UserStyle، ولإتاحة ذلك وعمليات التشغيل المتعدّدة، أصبح معرّف مثيل خلفية شاشة الساعة متاحًا الآن من خلال WatchState.watchFaceInstanceId.

  • يتم الآن تخزين ComplicationData مؤقتًا للسماح بعرض البيانات المعقّدة فور تحميلها. يخزّن النظام أحيانًا ComplicationData مؤقتًا في الذاكرة، وتعمل مكتبات خلفيات شاشة الساعة أحيانًا على تسلسلها. عند تسلسل أي tapAction مرتبط، سيتم فقدانه. وفي حال حدوث ذلك، ستعرض ComplicationData.tapActionLostDueToSerialization القيمة true، ويجب أن تعرض خلفية الساعة العنصر بشكل مختلف (على سبيل المثال، بلون رمادي أو شبه شفاف) للإشارة إلى أنّه لا يمكن النقر عليه. سيرسل النظام ComplicationData معدَّلة تتضمّن tapAction في أقرب وقت ممكن.

  • لا يجب تخزين بعض ComplicationData مؤقتًا لفترة طويلة، ولتوفير هذه الإمكانية، أضفنا ميزة أكثر عمومية ComplicationDataTimeline. يمكن استخدام ذلك لتوفير تسلسل من ComplicationData محدد بوقت يتم تسليمه إلى خلفية الساعة التي يمكن تخزينها مؤقتًا وتعديلها تلقائيًا. على سبيل المثال، توقعات الطقس لهذا اليوم في أوقات مختلفة أو أحداث متعددة قادمة في التقويم. تمت إضافة طريقة جديدة onComplicationDataTimeline إلى ComplicationRequestListener يمكنك استخدامها لعرض هذه البيانات.

  • تمّت إضافة إمكانية تحديد ComplicationType لمصادر البيانات الأساسية والثانوية إلى DefaultComplicationDataSourcePolicy.

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

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

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

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

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

  • إصلاح الخطأ الذي يتسبّب في عدم التعامل بشكل صحيح مع tapAction في PhotoImageComplicationData (I1cc30)

الإصدار 1.0.0

‫1 كانون الأول (ديسمبر) 2021

تم طرح androidx.wear.watchface:watchface-*:1.0.0. يتضمّن الإصدار 1.0.0 هذه التعديلات.

الميزات الرئيسية في الإصدار 1.0.0

حزمة androidx.wear.watchface هي المكتبة الجديدة التي يُنصح بها لتطوير خلفيات شاشة الساعة على WearOS. ويتضمّن عددًا من الميزات الجديدة مقارنةً بمكتبة Wearable Support Library القديمة.

  • تتيح المكتبة للمستخدمين اختيار الأنماط (مثل تغيير لوحة الألوان ونمط عقارب الساعة وشكل علامات الساعات وما إلى ذلك) بشكل مباشر (راجِع androidx.wear.watchface.style). أصبح من الأسهل الآن تطوير أداة تعديل لخلفية شاشة الساعة باستخدام androidx.wear.watchface.editor، ويمكن تعديل خلفية شاشة الساعة من تطبيق النظام المرافق بدون الحاجة إلى كتابة أي رمز إضافي.
  • أفضل الممارسات مضمّنة. أنشأت المكتبة تلقائيًا تصنيفات محتوى قارئ الشاشة للبيانات المعروضة على الشاشة (يمكنك أيضًا إضافة تصنيفاتك الخاصة)، كما ينخفض معدّل عرض اللقطات تلقائيًا عندما تكون البطارية منخفضة ولا يتم شحنها لتحسين عمر البطارية.
  • يجب كتابة رمز برمجي أقل لتطوير خلفية شاشة، لا سيما بالنسبة إلى البيانات المعقّدة التي تم نقل الكثير من الرموز النموذجية إلى المكتبة.

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

  • حلّ المشكلة EditorSession.userStyle.compareAndSet (I6f676)
  • إصلاح حالات التأخير القصيرة جدًا في خلفية شاشة الساعة (Iffb97)
  • إرسال InteractiveWatchFaceImpl.onDestroy في سلسلة واجهة المستخدم (I83340)
  • حلّ العديد من المشاكل المتعلّقة بأجهزة استقبال البث (I7d25f)

الإصدار ‎1.0.0-rc01

‫3 نوفمبر 2021

تم طرح androidx.wear.watchface:watchface-*:1.0.0-rc01. يتضمّن الإصدار 1.0.0-rc01 هذه التعديلات.

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

  • إصلاح dump() (الذي يتم استدعاؤه بواسطة adb shell dumpsys) الذي تعذّر تنفيذه بسبب عمليات نقل البيانات. (087cf9e)

  • ضمان الترتيب الصحيح لـ writeDirectBootPrefs نريد أن يتم تشغيل writeDirectBootPrefs دائمًا بعد initStyleAndComplications وإلا سنواجه خطر تأخير عملية تهيئة سلسلة تعليمات واجهة المستخدم.(37650ac)

  • تأكَّد من استدعاء Renderer.onDestroy. في السيناريو الذي تم فيه إنشاء العارض ولكن لم يكتمل تهيئة WF وتم استدعاء Engine.onDestroy، علينا استدعاء Renderer.onDestroy. (f9952dc)

  • تحسين/إصلاح isBatteryLowAndNotCharging تنقل حزمة التصحيح هذه عملية الإعداد الأولي للمتغيّر isBatteryLowAndNotCharging إلى وقت سابق، ما يعني أنّه يمكن تنفيذها بالتوازي مع createWatchFace. بالإضافة إلى ذلك، نستمع الآن إلى ACTION_POWER_DISCONNECTED. (ddffd80

  • يجب أن تكون قيمة InteractiveWatchFaceClientImpl.isConnectionAlive هي false بعد الإغلاق (ab9774e)

الإصدار ‎1.0.0-beta01

‫27 أكتوبر 2021

تم طرح androidx.wear.watchface:watchface-*:1.0.0-beta01. يتضمّن الإصدار 1.0.0-beta01 هذه التعديلات.

الإصدار ‎1.0.0-alpha24

‫13 أكتوبر 2021

تم طرح androidx.wear.watchface:watchface-*:1.0.0-alpha24. يتضمّن الإصدار 1.0.0-alpha24 هذه التعديلات.

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

  • تم نقل الفئات في الحزمة androidx.wear.watchface.complications إلى مشروع wear:watchface:watchface-complications جديد. يُرجى العِلم أنّ هذا يعني أنّه لا يمكنك تضمين هذه المكتبة بالإضافة إلى أي إصدار أولي سابق من wear:watchface:watchface-complications-data لأنّك ستتلقّى أخطاء بشأن الفئات المكرّرة. (I97195)
  • تمت إعادة تسمية Renderer.dump إلى Renderer.onDump وتمت إضافة التعليق التوضيحي ‎ @UiThread إليه. (I44845)
  • تمت إعادة تسمية "InteractiveWatchFaceClient.addWatchFaceReadyListener" إلى "addOnWatchFaceReadyListener"، وإعادة تسمية "removeWatchFaceReadyListener" إلى "removeOnWatchFaceReadyListener". (I48fea)
  • لم يعُد getComplicationsPreviewData وgetComplicationsDataSourceInfo دالتَ تعليق في EditorSession، بل أصبحا سمتَين StateFlow<> تكون قيمتهما في البداية فارغة. تمت إزالة getListenableComplicationPreviewData وgetListenableComplicationsProviderInfo في ListenableEditorSession لصالح عناصر StateFlow<> الجديدة من الفئة الأساسية. إذا كنت بحاجة إلى الاستماع إلى التغييرات في رمز Java، ننصحك باستخدام androidx.lifecycle.FlowLiveDataConversions.asLiveData للتحويل إلى LiveData<>. (Ic5483)

الإصدار ‎1.0.0-alpha23

‫29 سبتمبر 2021

تم طرح androidx.wear.watchface:watchface-*:1.0.0-alpha23. يتضمّن الإصدار 1.0.0-alpha23 هذه التعديلات.

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

أصبحت مكتبة خلفيات شاشة الساعة الآن مجموعة مكتبات واحدة، ونتيجةً لذلك، تم نقل المكتبات وعليك تعديل عمليات استيراد Gradle على النحو التالي:

قديم جديد
androidx.wear:wear-complications-data androidx.wear.watchface:watchface-complications-data
androidx.wear:wear-complications-data-source androidx.wear.watchface:watchface-complications-data-source
androidx.wear:wear-watchface androidx.wear.watchface:watchface
androidx.wear:wear-watchface-complications-rendering androidx.wear.watchface:watchface-complications-rendering
androidx.wear:wear-watchface-client androidx.wear.watchface:watchface-client
androidx.wear:wear-watchface-client-guava androidx.wear.watchface:watchface-client-guava
androidx.wear:wear-watchface-data androidx.wear.watchface:watchface-data
androidx.wear:wear-watchface-editor androidx.wear.watchface:watchface-editor
androidx.wear:wear-watchface-editor-guava androidx.wear.watchface:watchface-editor-guava
androidx.wear:wear-watchface-guava androidx.wear.watchface:watchface-guava
androidx.wear:wear-watchface-style androidx.wear.watchface:watchface-style

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

  • نقل مكتبتَي androidx.wear خلفيات شاشة الساعة وعناصر واجهة المستخدم المنفصلتَين إلى مجموعة مكتبات androidx.wear.watchface (b25f3c0)
  • تمت إضافة EditorRequest.canWatchFaceSupportHeadlessEditing لإعلام العميل ما إذا كانت أداة تعديل خلفية شاشة الساعة تتيح التعديل بدون واجهة مستخدم. يُرجى العِلم أنّه ستكون هناك بعض النتائج السلبية الخاطئة في هذا الإصدار لأنّه تمت إضافة الدعم في asop/1756809، ومع ذلك، سيعرض القيمة الصحيحة لجميع خلفيات شاشة الساعة المستقبلية. (ca55590)
  • يتضمّن Renderer الآن طريقة dump() يمكن إلغاؤها لإضافة بيانات مخصّصة إلى المعلومات التي يتم إنشاؤها من خلال خدمة WatchFaceService في أداة dumpsys الخاصة ببرنامج ADB. (95235f9)
  • تحدّد الدالة InteractiveWatchFaceClient.addWatchFaceReadyListener الآن المنفِّذ أولاً. (563ac2f)
  • تمت إزالة StateFlowCompatHelper، ويجب استخدام asLiveData (androidx.lifecycle.asLiveData) بدلاً منه. (bd35d3)
  • لم يعُد CurrentUserStyleRepository.userStyle قابلاً للتغيير. (I44889)
  • تمت إعادة تسمية WatchFaceReadyListener إلى OnWatchFaceReadyListener. (Ic12a9)

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

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