תצוגת השעון של Wear

פיתוח אפליקציות לשעונים חכמים של Wear OS by Google.

הערה: החל מ-10 ביולי 2024, תצוגות שעון חייבות להיות בפורמט Watch Face Format כדי שניתן יהיה להתקין אותן במכשירים עם Wear OS 5 שמותקן מראש, וגם בכל תצוגות השעון החדשות שיתפרסמו ב-Google Play החל מ-27 בינואר 2025.

במאמר הזה במרכז העזרה מפורט מידע נוסף על השינויים שמשפיעים על המשתמשים.

העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסה אלפא
15 בינואר 2025 1.2.1 - - 1.3.0-alpha05

הצהרת יחסי תלות

כדי להוסיף תלות ב-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"
}

מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ל-build.

משוב

המשוב שלכם עוזר לנו לשפר את Jetpack. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להצביע על בעיה קיימת, לוחצים על לחצן הכוכב.

דיווח על בעיה חדשה

מידע נוסף זמין במסמכי התיעוד של Issue Tracker.

גרסה 1.3

גרסה 1.3.0-alpha05

15 בינואר 2025

androidx.wear.watchface:watchface-*:1.3.0-alpha05 משוחרר. גרסת 1.3.0-alpha05 כוללת את ההוספות האלה.

תכונות חדשות

לרוב, אפשר לבחור צבעים בפנים השעון באמצעות ListUserStyle. הפתרון הזה עובד, אבל הוא כרוך בשליחת הסמלים דרך Bluetooth לכלי העריכה הנלווה, וזו פעולה לא יעילה. לכן הוספנו את ColorUserStyleSetting, שבו עומס העבודה הוא רשימה של צבע אחד או יותר לכל סגנון, עם פורמט נתונים קומפקטי יותר.

הוספנו תכונה ל-OEM שמאפשרת לספקים של רכיבים בתצוגת השעון של יצרני ציוד מקורי להוסיף פריטים נוספים ל-ComplicationData לשימוש בתצוגות השעון של יצרני ציוד מקורי.

שינויים ב-API

  • לכיתות UserStyleSetting ו-UserStyleOption יש עכשיו בוניים, והם הדרך המומלצת ליצור אותן. (Iacd03)
  • תמיכה בהעברת נתונים נוספים ב-ComplicationData. האפשרות הזו מיועדת לשימוש של יצרני ציוד מקורי (OEM), שבהם הם שולטים גם בספק התוספים וגם במסך השעון המקבל. כדי להגדיר תוספת, נדרשת ההרשאה com.google.android.wearable.permission.COMPLICATION_EXTRAS עם הרשאת הרשאה. (I4e3b2)
  • לרוב, בתצוגות השעון המשתמשים יכולים לבחור צבעים באמצעות ListUserStyle, עם סמל לכל ListOption. מאחר שסכמות UserStyle נשלחות דרך Bluetooth, חשוב לצמצם את הגודל של הסכימה. זה יכול להיות בעיה אם יש עשרות אפשרויות צבעים בגלל כל הסמלים האלה. כדי לעזור בכך, הוספנו את האפשרות ColorUserStyleSetting שבה האפשרות מכילה רשימה של צבעים במקום סמל, והיא הרבה יותר קומפקטית. (Ib542e)
  • כדי להשתמש ב-ColorUserStyleSetting וב-ColorOption נדרש API 34. (I8771d)

תיקוני באגים

  • הספרייה הזו משתמשת עכשיו בהערות של JSpecify לגבי ערכים null, שהן שימוש בסוגים. מפתחי Kotlin צריכים להשתמש בארגומנטים הבאים של המהדר כדי לאכוף שימוש נכון: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (Ifd363, b/326456246)

גרסה 1.3.0-alpha04

18 בספטמבר 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha04 משוחרר. גרסת 1.3.0-alpha04 מכילה את ההוספות האלה.

תכונות חדשות

  • הוספנו תמיכה בחיבור איטי (lazy loading) של סמלים ב-UserStyleSettings וב-UserStyleOptions, שמאפשר לשפר את הביצועים של טעינת חזיתות השעון. (Iaf43d)
  • נוספה אפשרות לצילום צילום מסך מעודכן בכל פעם שהגדרות המערכת משתנות (למשל, אם השפה או האזור השתנו) באמצעות Watchface.setUpdateScreenshotOnConfigurationChange החדש. כברירת מחדל, ההגדרה הזו מושבתת. (I765a1)

תיקוני באגים

  • הסרנו את התיאור הידני של הגישה לממשקי API חדשים של פלטפורמות, כי זה קורה באופן אוטומטי באמצעות בניית מודלים של ממשקי API כשמשתמשים ב-R8 עם AGP 7.3 ואילך (למשל, R8 גרסה 3.3) ובכל גרסאות ה-build כשמשתמשים ב-AGP 8.1 ואילך (למשל, D8 גרסה 8.1). לקוחות שלא משתמשים ב-AGP מומלצים לעדכן ל-D8 בגרסה 8.1 ואילך. למידע נוסף, מומלץ לעיין במאמר הזה. (Ia60e0, ‏ b/345472586)

גרסה 1.3.0-alpha03

17 באפריל 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha03 משוחרר. גרסת 1.3.0-alpha03 מכילה את ההוספות האלה.

שינויים ב-API

  • הוספנו את EditorSession#setOverrideComplications שמגדיר באופן זמני את ComplicationData של מופע השעון הבסיסי במהלך העריכה. אם השינויים ב-Complications מתרחשים לעיתים רחוקות, האפשרות הזו יעילה יותר מהעברת ערכי-ברירת מחדל דרך EditorSession#renderWatchFaceToBitmap. (I19384)

תיקוני באגים

  • בעבר, selectComplicationDataForInstant קרא ל-toApiComplicationData לכל לוחות זמנים, כלומר בדיקת השוויון של ההפניה === תמיד תיכשל. המשמעות היא שהתכונות האלה נטענו מחדש בכל פריים, מה שהוביל לירידה ברמת הטעינה של הסוללה. (717406)

גרסה 1.3.0-alpha02

3 באפריל 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha02 משוחרר. גרסת 1.3.0-alpha02 כוללת את ההוספות האלה.

תכונות חדשות

  • עכשיו אנחנו משתמשים בשוויון של הפניה כדי להשוות בין best לבין selectedData כי אופרטור השוויון יקר. (446b00)

שינויים ב-API

  • הוספנו ממשק API דינמי ללא חלופה ל-GoalProgressComplicationData. (c33264)

גרסה 1.3.0-alpha01

7 בפברואר 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha01 משוחרר. גרסה 1.3.0-alpha01 כוללת את ההוספות האלה.

תכונות חדשות

  • אפשר לאתחל את WatchFaceServices בו-זמנית, ולכן הוא צריך להיות ללא מצב (stateless). כדי לתמוך בכך, הוספנו את StatefulWatchFaceService, שבו פרמטר נוסף שהוגדר על ידי משתמש ונוצר על ידי createExtra() מועבר לכל ההחרגות שנקראות במהלך האתחול.
  • ל-GlesRenderer2 יש עכשיו עומס יתר של קונסטרוקטור שמאפשר לציין רשימה של מאפיינים לניסיון בתורו עם eglChooseConfig.

שינויים ב-API

  • StatefulWatchFaceService תומך עכשיו בשינוי של getComplicationSlotInflationFactory, שאליו מועבר הפריט הנוסף שהוגדר על ידי המשתמש על ידי createExtra(). (I82d9f)
  • חלק מהמסכים צריכים לשתף נתונים משניים שנוצרו במהלך createUserStyleSchema עם שיטות האיפוס האחרות. מכיוון שלא הייתה חלופה טובה יותר, בדרך כלל המפתחים יצרו WatchFaceServices עם מצב. זוהי פעולה מסוכנת כי יכולות להיווצר כמה מכונות בו-זמנית, מה שעלול להוביל לבאגים. כדי לפתור את הבעיה הזו, הוספנו את StatefulWatchFaceService ואת StatefulWatchFaceRuntimeService, שבהם סוג שהוגדר על ידי משתמש נוצר על ידי createExtra() ומוענק לשיטות היצירה השונות כפרמטר. (If8a99)
  • הוספנו את getUserStyleFlavors ל-InteractiveWatchFaceClient, והוא מעניין בעיקר יצרני ציוד מקורי (OEM). (I0f5d8)
  • ל-GlesRenderer2 יש עכשיו עומס יתר של קונסטרוקטור שמאפשר לציין רשימה של מאפיינים לניסיון בתורו עם eglChooseConfig. לדוגמה, כך תוכלו לנסות קודם תצורה עם סינון רעשי צבע, ואם צריך, לעבור לתצורה ללא סינון. (I1ba74)
  • החל מגרסה Android U, תתווסף ל-WearOS תמיכה ב-SystemDataSources.DATA_SOURCE_HEART_RATE. מובטח שהתוסף הזה יתמוך רק בתוספים מסוג 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, שמכיל מערך של רכיבים (זוגות של משקל וצבע) יחד עם טקסט/כותרת/תמונה אופציונליים. הנתונים האלה עשויים להופיע כתרשים עוגה, שבו הצבעים צריכים להיות משמעותיים בהתאם להקשר, כי בדרך כלל אין מקום ב-Complication להצגת תוויות.
  • הוספנו תמיכה באפשרויות האופציונליות ColorRanges עד RangedValueComplicationData. בדרך כלל, התכונות הנוספות מוצגות בצבעים שבחרתם בשעון, אבל לפעמים ComplicationDataSource הוא המקום הטוב ביותר להגדרת הצבעים, למשל כשיש להם משמעות סמנטית מסוימת. לדוגמה, אדום לכחול לטמפרטורה.
  • כמעט כל סוגי ComplicationData תומכים עכשיו ב-SmallImages.
  • הוספנו את ComplicationDisplayPolicy, שבו DO_NOT_SHOW_WHEN_DEVICE_LOCKED מורה לשעון עם תצוגה תואמת לא להציג את התוספת כשהמכשיר נעול.
  • החל מ-Android T, יצרני ציוד מקורי יוכלו לקבוע אם בקשה להוספת רכיב מותאם אישית לשעון מגיעה ממסך שעון שמופיע ברשימה שמוגדרת לפי המטא-נתונים של android.support.wearable.complications.SAFE_WATCH_FACES במניפסט של הספק שלהם באמצעות ComplicationRequest#isForSafeWatchFace. כדי לקבל ערכים אחרים מלבד TargetWatchFaceSafety.UNKNOWN, הספק יצטרך את ההרשאה com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE.
  • התכונה UserStyleFlavors הפכה לתכונה רגילה.

גרסה 1.2.0-rc01

18 באוקטובר 2023

androidx.wear.watchface:watchface-*:1.2.0-rc01 משוחרר. גרסה 1.2.0-rc01 כוללת את השמירות האלה.

גרסה 1.2.0-beta02

6 בספטמבר 2023

androidx.wear.watchface:watchface-*:1.2.0-beta02 משוחרר. גרסה 1.2.0-beta02 כוללת את ההצהרות האלה.

תכונות חדשות

  • SuspendingComplicationDataSourceService#onDestroy פתוח עכשיו. לתשומת ליבכם: התמיכה ב-Complication של מזג האוויר שמוגדרת כברירת מחדל במערכת הוסרה.

שינויים ב-API

  • מבטלים את האפשרות 'חשיפת מקור נתונים חדש לבעיות במזג האוויר'. (I6f335)

גרסה 1.2.0-beta01

23 באוגוסט 2023

androidx.wear.watchface:watchface-*:1.2.0-beta01 משוחרר. גרסה 1.2.0-beta01 כוללת את ההוספות האלה.

תכונות חדשות

  • החל מגרסה Android T, מערכת WearOS תתמוך עכשיו ב-complication של מערכת מזג האוויר שמוגדרת כברירת מחדל.

שינויים ב-API

  • הוספת ברירת מחדל למערכת של מזג האוויר לתכונות נוספות. (Ia0994)
  • התיקון הזה מוסיף את WatchFaceRuntimeService ו-WatchFaceControlClient.createWatchFaceRuntimeControlClient יחד עם חבילות guava. העדכונים האלה מוסיפים תמיכה בסביבות זמן ריצה של תצוגות שעון. אלה סוג מיוחד של תצוגות שעון שמטעינות את ההגדרה שלהן מחבילה אחרת. בשלב זה, WearOS תומך רק בסביבת זמן הריצה של פורמט חזית השעון של Android. (I2799f)
  • התיקון הזה הוא המשך של aosp/2636578, שבו שינינו את השמות של הגדרות המשתנים מסוג int כדי שלא יהיה צורך לשנות קוד שמבוסס על WatchFaceType,‏ CanvasType,‏ TapType או ComplicationsSlotBoundsType. (I4098b)
  • עדכנו את קובצי ה-API כדי להוסיף הערות לגבי ביטול תאימות. (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 מכילה את ההוספות האלה.

תכונות חדשות

  • עכשיו אפשר להשתמש ב-DynamicFloat ב-RangedValueComplicationData.Builder, ויש DynamicComplicationText חדש שזמין כסוג משנה של ComplicationText. שני סוגי ה-API האלה יכולים להשתמש בביטויים דינמיים ובקישורי פלטפורמה שמתעדכנים בקצב של 1Hz במכשירי Wear 4 נתמכים.

שינויים ב-API

  • נוספו סוגי מודעות דינמיות למרחק היומי, לקלוריות היומיות ולקומות היומיות. המפתחות של מקורות המידע בנושא בריאות בפלטפורמה נמצאים עכשיו בקטע PlatformHealthSources.Keys (Ib7637)
  • מטמיעים את PlatformDataProvider כדי לספק נתוני דופק וצעדים יומיים. ממשק SensorGateway הוסר מ-API הציבורי. (I55b84)
  • משנים את השם של StateEntryValue ל-DynamicDataValue ומעדכנים את ממשקי ה-API של המצבים כך שישתמשו ב-DynamicDataKey. (If1c01)
  • הוספת AppDataKey לגישה למצב של האפליקציה שנדחף, הוספת PlatformDataKey לגישה לנתוני הפלטפורמה, הוספת תמיכה במרחב שמות ב-StateStore. (I7985e)
  • השיטות enable/disablePlatformSource הוסרו מ-DynamicTypeEvaluator. מבצע הקריאה החוזרת צריך להיות אחראי על העדכונים. (I78c6d)
  • מאפשרים להגביל את הגודל של סוגי הנתונים המקושרים. (Ie2966)

גרסה 1.2.0-alpha08

19 באפריל 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha08 משוחרר. גרסה 1.2.0-alpha08 מכילה את ההוספות האלה.

תכונות חדשות

  • החל מ-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 עבור חזיתות שעון בטוחות. כלומר, ספק של תצוגת מידע משנית יכול לבחור להציג סוגים שונים של תצוגות מידע משניות לשעונים מהימנים לעומת שעונים לא מהימנים.

שינויים ב-API

  • העברה של הכיתה @Deprecated לנכס (I882d1, ‏ b/271441831)
  • שם הפרמטר של הערך של Enum.valueOf השתנה (Ia9b89)
  • חריגות נוספות שהושלחו מ-valueOf של enum (I818fe)
  • הסרנו את renderWatchFaceToSurface לטובת createRemoteWatchFaceView, שנבנה על גבי SurfaceControlViewHost ומאפשר למבצע הקריאה להטמיע תצוגה מתצוגת השעון, שמרינדרת כשהלקוח קורא ל-RemoteWatchFaceViewHost#renderWatchFace. (Ib311d)
  • הוספנו את renderWatchFaceToSurface אל InteractiveWatchFaceClient, HeadlessWatchFaceClient ו-EditorSession. בדרך כלל, הביצועים יהיו טובים יותר מאשר עיבוד לרשת ביט (bitmap). (Ieacad)
  • השם של ObservableStateStore השתנה ל-StateStore. (Ieb0e2)
  • נוספה DynamicTypeEvaluator.Builder במקום ארגומנטים של קונסטרוקטור כדי לאפשר יותר ארגומנטים אופציונליים, כולל ObservableStateStore שהברירת המחדל שלו עכשיו היא מאגר ריק. (I6f832)
  • סדר הפרמטרים ב-DynamicTypeEvaluator עובר שינוי. (Ic1ba4)
  • הוספה של Executor לשיטות DynamicTypeEvaluator.bind. (I346ab)
  • הוספנו את השיטה startEvaluation ל-BoundDynamicType כדי להפעיל את ההערכה אחרי שמקשרים את הסוג הדינמי. (I19908)
  • ספקי תכונות מורכבות עם ההרשאה com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE יכולים לרשום מטא-נתונים של androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES שמשנים את android.support.wearable.complications.SUPPORTED_TYPES עבור תכונות שעון בטוחות. (Id1c73)
  • שינינו את השם של CustomValueUserStyleSettings2 ל-LargeCustomValueUserStyleSettings. (Ic17ac)

תיקוני באגים

  • DynamicTypeValueReceiver#onPreUpdate הוסר. (I2dc35)

גרסה 1.2.0-alpha07

22 בפברואר 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha07 משוחרר. גרסה 1.2.0-alpha07 מכילה את ההצהרות האלה.

תכונות חדשות

  • החל מ-Android T, יצרני ציוד מקורי יוכלו לקבוע אם בקשה להוספת רכיב מותאם אישית לשעון מגיעה ממסך שעון שמופיע ברשימה שמוגדרת לפי המטא-נתונים של android.support.wearable.complications.SAFE_WATCH_FACES במניפסט של הספק שלהם באמצעות ComplicationRequest#isForSafeWatchFace. כדי לקבל משהו אחר מ-TargetWatchFaceSafety.UNKNOWN, לספק תצטרך את ההרשאה com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE.

  • אפשר גם להשתמש ב-CustomValueUserStyleSetting2 מ-Android T, שיכול להכיל עד 12.5kb. המגבלה הקודמת של CustomValueUserStyleSetting הייתה 1KB. למרות הגבלות הגודל המורחבות, מפתחי חזיתות השעון מומלצים לשמור על נתונים קטנים, כי ההגדרות נשלחות דרך Bluetooth במהלך העריכה, ורוחב הפס של Bluetooth מוגבל.

שינויים ב-API

  • הוספנו פרמטר אופציונלי 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, שמתאים לשימוש של יצרני ציוד מקורי (OEM) ודורש את com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE. במקורות נתונים בתמונת המערכת, הפונקציה תחזיר את הערך true אם לוח השעון המבקש נמצא ברשימת לוחות השעון הבטוחים שצוינה על ידי מקור הנתונים במניפסט שלו. (I0cbb6)
  • ב-Android T הוספנו את CustomValueUserStyleSetting2 שיכול להכיל עד 12.5KB. המגבלה הקודמת של CustomValueUserStyleSetting הייתה 1KB. (I0b100)

גרסה 1.2.0-alpha06

25 בינואר 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha06 משוחרר. גרסה 1.2.0-alpha06 מכילה את ההצהרות האלה.

תכונות חדשות

  • אנחנו עובדים על הוספת תמיכה לקישורים של פלטפורמות של סמלי Complications. התכונה הזו עדיין לא מוכנה לשימוש, אבל כדאי להמשיך להתעדכן.
  • הוספנו תמיכה ב-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 היררכי, ומגרסת Android T אפשר להשתמש ביותר מ-ComplicationSlotsUserStyleSetting אחד בהיררכיה. רק ComplicationSlotsUserStyleSetting אחד יהיה פעיל, על סמך הבחירות של המשתמש בסגנון.

  • אנחנו משפרים את התמיכה בקוראי מסך עבור ListOption ו-ComplicationSlotsOption על ידי הוספת שדה screenReaderName. הערה: לפני Android T, עורכי התוספים יתעלמו מהשדה הזה.

שינויים ב-API

  • הוספנו שדה screenReaderName אופציונלי חדש ל-ListOption ול-ComplicationSlotsOption לשימוש של עורכי תוכן – עורכי תוכן נלווים יתעלמו מהשדה הזה במכשירים עם גרסת Android לפני T. (I75326)
  • החל מגרסה android T יש תמיכה בכמה ComplicationSlotsUserStyleSettings בהיררכיית סגנונות, כל עוד רק אחד מהם יכול להיות פעיל בכל רגע נתון. הוספנו פונקציית שירות findComplicationSlotsOptionForUserStyle ל-UserStyleSchema כדי לעזור למצוא את ComplicationSlotsOption הפעיל, אם יש כזה. (Ic2b06)
  • RangedValuesTypes הועברו לאובייקט התאמה של RangedValueComplicationData ושינו את השם ל-TYPE_UNDEFINED, TYPE_RATING ונוסף TYPE_PERCENTAGE חדש. (I55d02)
  • שינינו את השם של הניסוי הניסיוני DynamicFloat ל-FloatExpression וסימנו אותו כ-@hide. (Idf4f1)
  • הוספת הערה @JvmDefaultWithCompatibility (I8f206)

גרסה 1.2.0-alpha04

9 בנובמבר 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha04 משוחרר. גרסה 1.2.0-alpha04 מכילה את ההוספות האלה.

תכונות חדשות

  • ב-Android T הוספנו תמיכה בשני סוגי סמלי 'הוספה לשעון' חדשים, GoalProgressComplicationData ו-WeightedElementsComplicationData.
  • GoalProgressComplicationData דומה ל-RangedValueComplicationData, אבל הערך שלו יכול לחרוג מהיעד (ב-RangedValueComplicationData הערך מוגבל לטווח [min .. max]), ויש לכך השלכות על העיצוב החזותי שעשויות לא להתאים לכל חזיתות השעון.
  • GoalProgressComplicationData מוסיף תמיכה בתרשימי עוגה ובפירוטים דומים של נתונים פשוטים.
  • הוספנו תמיכה אופציונלית עבור ColorRamps עד RangedValueComplicationData.
  • ב-Android T, הוספנו את ComplicationPersistencePolicy ו-setCachePolicy ל-ComplicationData, שמאפשרים כרגע לספק לקבוע אם רכיב מורכב יישמר או לא (כלומר, אם הוא יישמר במטמון אחרי הפעלה מחדש). ברוב התכונות הנוספות לא תצטרכו להגדיר בקרה על מטמון, אבל כך תוכלו לפתור מקרים קיצוניים שבהם מוצגים נתונים מיושנים בתכונות מסוימות שמתעדכנות בתדירות גבוהה (למשל, תכונות נוספות עם נתוני בריאות). הוספנו גם את ComplicationDisplayPolicy, שבו DO_NOT_SHOW_WHEN_DEVICE_LOCKED מורה לתצוגת שעון תואמת לא להציג את התכונה הנוספת כשהמכשיר נעול. (Ic9574)

שינויים ב-API

  • התכונות GoalProgressComplicationData, ‏WeightedElementsComplicationData ו-ColorRamp כבר לא נחשבות לניסיוניות. (Ica9e2)
  • עכשיו ComplicationPersistencePolicy ו-ComplicationDisplayPolicy מסומנים כראוי כ-T APIs. (I31d88)
  • ה-constructor של ComplicationSlotOverlay, שהוצא משימוש, כולל עכשיו את DeprecationLevel.WARNING שמאפשר לקרוא לו שוב מ-Java. (Ib308c)
  • תיקנו כמה בעיות תאימות ל-Java ב-ComplicationRequestListener, ב-CanvasComplication, ב-ComplicationTapFilter וב-InteractiveWatchFaceClient על ידי הוספת הערות באמצעות @JvmDefaultWithCompatibility (Id94fc)
  • הסרנו את האפשרויות הניסיוניות ProtoLayoutComplicationData ו-ListComplicationData. הסיפור של המפתחים לגבי הנושא הזה לא היה ברור, ואנחנו מקווים לחזור אליו בעתיד. (I9df05)
  • הוספנו ValueType בחזרה ל-RangedValueComplicationData. עכשיו יש תמיכה בצבע רקע ב-WeightedElementsComplicationData. הסרנו את DiscreteRangedValueComplicationData כי הפונקציונליות שלו היא קבוצת משנה של WeightedElementsComplicationData. (I6446c)

תיקוני באגים

  • כוללים את isForScreenShot בקוד השווה ובקוד ה-hash. מוודאים שהשדה onRenderParametersChanged מקבל ערך isForScreenshot תקין (I04a41)
  • תוקנו דליפות של WatchFaceControlService מלקוחות ללא ממשק משתמש. (e90e00)

גרסה 1.2.0-alpha03

5 באוקטובר 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha03 משוחרר. גרסה 1.2.0-alpha03 כוללת את ההוספות האלה.

תכונות חדשות

  • אין תכונות חדשות, אבל תיקנו כמה באגים בכלי לעריכת תצוגות שעון.

שינויים ב-API

  • הוצא משימוש UserStyleSchema.userStyleSettings כי rootUserStyleSettings הפך לתכונה לא ניסיונית (Ie96e3)
  • העברת rootUserStyleSettings מגרסת הניסוי (I8d6b3)
  • סימנו את WatchFaceColors כתכונה ניסיונית כי לא כל המערכות תומכות בה (I6d75d)
  • חושפים את DisconnectReasons ב-API הציבורי כדי שהוא יפעל עם IntDef. (I791f8)

תיקוני באגים

  • אם SysUI נכבה, סוגרים את כל הקבצים הפתוחים בעורך בשעון. אם SysUI נכבה והעורך של תצוגת השעון לא נסגר, ייתכן שתצוגת השעון תישאר במצב לא עקבי כי המערכת מסתמכת על SysUI כדי לשמור שינויים בסגנון של המשתמש.(ba762a
  • תיקון של דליפת זיכרון ב-ComplicationDataSourceInfoRetriever, שבו המשך של קורוטין ב-Kotlin שימש כ-GC root ושמר את הפעילות של העורך.(33ee06)

גרסה 1.2.0-alpha02

21 בספטמבר 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha02 משוחרר. גרסה 1.2.0-alpha02 מכילה את השמירות האלה.

תכונות חדשות

  • לחלק מהמסכים יש הגדרות מחוץ ל-UserStyle שמשפיעות על המראה שלהם (למשל, בחירת תמונת רקע). הוספנו את Renderer.sendPreviewImageNeedsUpdateRequest שמאפשר לתצוגת השעון לבקש תמונה מעודכנת של התצוגה המקדימה. חשוב לדעת: כדי שהתכונה הזו תפעל, צריך להתקין עדכון מערכת תואם.

  • הוספנו גם ממשק API לתצוגות שעון כדי לחשוף את הצבעים שלהן למערכת, שעלולה לבחור את לוח הצבעים שלה על סמך זה. הערה: התכונה הזו הפכה לניסיונית בתיקון נוסף.

  • כמעט כל סוגי ComplicationData תומכים עכשיו ב-SmallImages.

שינויים ב-API

  • לפעמים מנהל הטפטים יכול להתנתק ממנוע אחד וליצור מנוע אחר. הוספנו הגדרת int של DisconnectReason והרחבנו את ClientDisconnectListener בשיטה חדשה שכוללת DisconnectReason, שמאפשרת למאזין לראות את ניתוק המנוע. (I45cce)
  • נוספו שני פרמטרים אופציונליים, nameResourceId ו-screenReaderResourceId, ל-constructor של ComplicationSlotOverlay (I157e8)
  • הוספנו מעטפת של Guava לטעינה יתר החדשה של getOrCreateInteractiveWatchFaceClient עם PreviewImageUpdateRequestedListener. (Ic31f0)
  • הוספנו את Renderer.sendPreviewImageNeedsUpdateRequest, שמועיל לתצוגות שעון שיש להן מצב מחוץ ל-UserStyleSchema שמשפיע על המראה שלהן (למשל, תצוגת שעון עם תמונה לרקע שניתן לבחור). בצד הלקוח הוספנו את PreviewImageUpdateRequestedListener כפרמטר אופציונלי ל-getOrCreateInteractiveWatchFaceClient כדי לעקוב אחרי הבקשות האלה. (Iff44a)
  • הפשטנו את ה-API לחשיפת WatchFaceColors. עכשיו יש מאפיין פשוט בשם watchFaceColors ב-Renderer ששעון החכם יכול להגדיר. צריך לעדכן את המאפיין הזה לפי הצורך, בהתאם לשינויים בסגנון. במקום להשתמש ב-WallpaperManager כדי לצפות בשינויי צבע, הוספנו את OnWatchFaceColorsListener ל-InteractiveWatchFaceClient. (I490bc)
  • הוספנו את הכיתה WatchFaceColors שמכילה את שלושת הצבעים הבולטים ביותר של תצוגת השעון, והוספנו את השיטות הפתוחות watchfaceColors ו-notifyWatchFaceColorsChanged ל-Renderer. השיטות האלה מאפשרות למערכת לקבל את הצבעים של תצוגת השעון דרך WallpaperManager.getWallpaperColors. (I3d611)
  • ShortTextComplicationData, ‏ RangedValueComplicationData, ‏ NoPermissionComplicationData (וגם DiscreteRangedValueComplicationData, ‏ GoalProgressComplicationData ו-WeightedElementsComplicationData הניסיוניים) תומכים עכשיו ב-SmallImages. אם בוחרים להציג תצוגה מפורטת עם כמה צבעים, עכשיו יש אפשרות להשתמש ב-SmallImage עם כמה צבעים, במקום להשתמש בתמונה מונוכרום. (I257df)
  • שינוי PreviewImageUpdateRequestedListener ל-Consumer<> במקום זאת (Ia875d)
  • החלפת סוג OnWatchfaceColorsListener של שיטת SAM בודדת בהתאמה אישית בסוג 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 במעבד גרפיקה.
  • הוספנו גם שוליים אופציונליים לחריצי התכונות המותאמות אישית, כדי שיהיה קל יותר להקיש על תכונות מותאמות אישית קטנות.

שינויים ב-API

  • הכיתה הניסיונית BoundingArc לא ניתנת לשינוי. (If624a)
  • יכול להיות שיהיה קשה להקיש על סמלים קטנים. כדי לצמצם את הבעיה הזו, הוספנו תמיכה בשוליים שמגדילים את האזור שניתן להקיש עליו בלי להשפיע על העיבוד. אלא אם צוין אחרת (בקוד או באמצעות XML), לשדה ComplciationSlots יש שוליים בגודל אפס. (I14089)
  • שינוי החתימה של getComplicationSlotInflationFactory(CurrentUserStyleRepository) כך שתחזיר מופע של מפעל שאינו null. בעבר הייתה שגיאה בהחזרת null, ולכן השינוי הזה רק מבהיר את חוזה ה-API. (I0fcc0)
  • הוספנו את הארגומנט currentUserStyleRepository לשיטה WatchFaceService.getComplicationSlotInflationFactory כדי לשמור על עקביות עם createComplicationSlotsManager. (I2ddd2)
  • UserStyleFlavors הפכו לתכונות לא ניסיוניות. (I69cdc)
  • הסרנו את השדה הניסיוני ValueType מהשדה RangedValueComplicationData, ובמקום זאת הוספנו את השדה הניסיוני DiscreteRangedValueComplicationData, שהוא דומה ל-RangedValueComplicationData מלבד טווח הערכים והערך של המספרים השלמים. הוספנו גם את הפונקציה הניסיונית GoalProgressComplicationData, שדומה לפונקציה RangedValueComplicationData, אלא שהיא מיועדת למעקב אחר התקדמות לעבר יעד שבו הערך המינימלי הוא אפס באופן משתמע, והערך יכול להיות גדול מ-targetValue. הערה: בכל הווריאנטים של RangedValue, צריך לציין לפחות אחד מהפרמטרים monochromeImage,‏ text או title. (I9590c)
  • הסרנו את boundsWithMargins מ-ComplicationSlotState כי אין תרחיש לדוגמה לשימוש בו בתוכנת מערכת. (I42e26)
  • הוספנו תמיכה ניסיונית ב-WeightedElementsComplicationData, שמכיל מערך של רכיבים (זוגות של משקל וצבע) יחד עם טקסט/כותרת/תמונה אופציונליים. הנתונים האלה עשויים להופיע כתרשים עוגה, שבו הצבעים צריכים להיות משמעותיים בהתאם להקשר, כי בדרך כלל אין מקום ב-Complication להצגת תוויות. (I87eea)
  • בעזרת הפרמטר הניסיוני ColorRamps, שאפשר להשתמש בו ב-RangedValueComplicationData וב-GoalProgressComplicationData, אפשר עכשיו לציין רצף של עד שבעה צבעים ודגל שמציין אם צריך לבצע טרנספורמציה חלקה בין הצבעים או ליצור שלבים של צבעים מוצקים בגודל שווה. (I9f5bf)
  • השדה RangedValueComplicationData.drawSegmented השתנה ל-valueType, שהוא מספר שלם עם ValueType IntDef תואם שמספק משמעות סמנטית לערך הטווח, ויכול לשמש את ה-renderer של התכונה המורכבת כדי להשפיע על העיצוב. (I0616b)
  • הוספנו תמיכה ניסיונית באפשרויות האופציונליות ColorRanges עד RangedValueComplicationData. בדרך כלל, התכונות הנוספות מוצגות בצבעים של תצוגת השעון, אבל לפעמים ComplicationDataSource הוא המקום המתאים ביותר להגדרת הצבעים, למשל כשיש להם משמעות סמנטית מסוימת. לדוגמה, אדום לכחול לטמפרטורה. (I5153a)
  • הוספנו ל-RangedValueComplicationData רמז drawSegmented ניסיוני. המשמעות היא שהמעבדים צריכים לצייר את האינדיקטור של הערך בטווח באמצעות קטעים, כאשר מקטע אחד = יחידה אחת. (I7d7c1)

תיקוני באגים

  • הוספנו את היכולת להגדיר את ComplicationSlotBounds ביחס למערכת קואורדינטות מסך מוגדרת מראש. (I0985d)

גרסה 1.1

גרסה 1.1.1

10 באוגוסט 2022

androidx.wear.watchface:watchface-*:1.1.1 משוחרר. גרסה 1.1.1 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

  • זוהי גרסה עם תיקוני באגים, ומשתמשים בגרסה 1.1.0 מומלצים מאוד לשדרג.

תיקוני באגים

  • האתחול של תצוגת השעון הוא אסינכרוני, ואם מתקבלת תוספת לפני שתצוגת השעון מוכנה, היא מועברת לרשימה pendingInitialComplications ותיושם מאוחר יותר. לצערנו, pendingInitialComplications הוחל מוקדם מדי, כך שבמהלך האתחול של תצוגת השעון עדיין הוספנו רכיבי תכונה לתצוגה pendingInitialComplications והתעלמנו מהם. הבעיה תוקנה. בנוסף, התיקון הזה מתקן באג שבו ComplicationRenderer ניסה בטעות לטעון placeholders באופן אסינכרוני, והניסיון נכשל וכתוצאה מכך הגרפיקה של הידור הקוד לא התעדכנה אף פעם. לבסוף, התיקון הזה מתקן באג תיאורטי, אם אפשר לקרוא לו כך, שבו צריך למזג כמה pendingInitialComplications. (0d03ba3)

  • תיקון נעילה מרובת משתתפים פוטנציאלית ב-InteractiveInstanceManager, שבה getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance החזיק את המנעול יותר מהזמן הנדרש. בדרך כלל, הפעולה engine.setUserStyle אמורה להתבצע במהירות, אבל אם מסיבה כלשהי היא לא מתבצעת במהירות, יכול להיות שנגיע למצב של נעילה מרובת משתתפים (deadlock) או ל-ANR. התיקון הזה מסיר מהנעילה עבודה מיותרת, ומבטל את האפשרות לנעילה מרובת משתמשים (deadlock). (5a2adca)

  • תיקון כמה בעיות שגרמו לשמירת WatchFaceService. לפעמים ה-WakeLock יכול לשמור את WatchFaceService. הוספת קריאה ל-release() פותרת את הבעיה הזו. בנוסף, ה-StateFlows יכול לשמור את ה-WatchFaceService. ביטול ה-CoroutineScopes הבסיסי פותר את הבעיה הזו.(fd48138)

  • מוסיפים זמן קצוב לתפוגה ל-awaitDeferredWatchFace* ומתקנים את watchfaceOverlayStyle NullPointerException. בנסיבות רגילות, הזמן הקצוב לא אמור לפוג, כולל אחרי התקנה חדשה ובתרחישי DirectBoot שבהם עומס ה-CPU גבוה. תוקן גם שגיאת NPE אם getWatchfaceOverlayStyle נקרא אחרי close().‏ (a4c3a5a)

גרסה 1.1.0

15 ביוני 2022

androidx.wear.watchface:watchface-*:1.1.0 משוחרר. גרסה 1.1.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.0.0

שיפורים בעריכה:

  • הוספנו תמיכה בסכימות היררכיות, שמאפשרות לכתוב היררכיה של סגנונות בממשקי המשתמש של עורכי הקוד. עכשיו אפשר לציין סמלים נפרדים לשימוש בממשק השעון ובעורכי האפליקציות הנלוות.
  • יש תמיכה בהסכמה מראש בכמה מופעים של תצוגת שעון, לכל מופע יש מזהה ייחודי שזמין בכל פלטפורמות ה-API.
  • עכשיו אפשר לציין שמות שקריאים לבני אדם עבור ComplicationSlots לשימוש בכלים לעריכה.
  • תמיכה ניסיונית ב'טעמים' של עיצוב, מבחר של סגנונות שנבחרו על ידי צוות העריכה, שיהיה גלוי דרך הכלי הנלווה.
  • כשעורכים שתי מכונות של חזית השעון, עכשיו אפשר למכונות של חזית השעון לשתף משאבים, וכך לחסוך בזיכרון
  • כשבוחרים רכיב מורכב בתצוגת השעון דרך הכלי לעריכה, הספק הנוכחי נבחר מראש.

רכיבי Complications משופרים:

  • עכשיו אפשר לציין את 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, אבל לא מומלץ להשתמש בה בשלב הזה.

שינויים ב-API

  • הוספנו עומס יתר ניסיוני של 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 חדשים. הם עדיין לא מוכנים לשימוש, אבל כדאי לעקוב אחרי העדכונים.

שינויים ב-API

  • הוספנו את BoundingArc, סיווג ניסיוני שמתאר את הגיאומטריה של חריץ ל-Complication בקצה המסך. הוא נוסף ל-ComplicationSlot וקישר ל-ComplicationSlotState ול-WatchFaceMetadataClient. (I61a40)
  • הוספנו את היכולת לקבל בירושה הגדרות ב-UserStyleSetting XML. כך תוכלו לצמצם את כמות המידע המוצג ולשתף הגדרה בין חזיתות השעון. (Ief841)
  • הוספנו שני סוגים חדשים של ComplicationData לניסוי: ListComplicationData ו-ProtoLayoutComplicationData. נכון לעכשיו אין תמיכה ברינדור בשום אחד מהסוגים האלה, ומערכת WearOS לא מזהה כרגע את הסוגים האלה אם הם מתווספים למניפסט ComplicationDataSource's. (I1811c)

תיקוני באגים

  • תיקון הסריאליזציה של סוג TimeLineEntry. לא ביצענו סריאליזציה של הסוג TimeLineEntry, מה שאומר ש-TimeLineEntries ששמור במטמון מסוג NoData יפורש באופן שגוי כסוג של הבעיה הראשית, מה שמוביל ל-NPE כשמתבצעת גישה לשדות נדרשים שלא קיימים. (55ffdf5)
  • תוקן באג שבו setComplicationData השמיט שדות של ציר זמן(fb392f5)
  • תוקן באג שבו לפעמים runBlockingWithTracing מוביל ל-NPE‏(12ca62e)
  • תוקן באג שגרם לכך שלפעמים מופיע ClassNotFoundException: android.support.wearable.complications.ComplicationText כשמקבלים תצוגת מידע מותאמת אישית.(217942d9)
  • תוקן באג ב-GlesRenderer.backgroundThreadInitInternal שבו המערכת התקשרה ל-onBackgroundThreadGlContextCreated רק אם התבצעה קריאה ל-EGL14.eglCreateContext. תוקן באג נוסף שבו היה שגיאה חזותית בצילום המסך שנגרמה על ידי verticalFlip.‏(c674ad2)
  • תיקון של בדיקת גרסת ה-XML של WatchFaceService. היא נטענה מהחבילה הלא נכונה.(dfa06f3)
  • פורמט ה-wire של placeholder משתמש עכשיו בחבילה פנימית. אנחנו לא רוצים שמיקומי תוכן זמניים יגרמו לשיבושים במסכי השעון הקיימים, שעשויים להשתמש ב-a.s.w.c.ComplicationData הפנימי והמוסתר. בעבר, בפורמט הנתונים של NoDataComplication, placeholder נשמר בשדות הרגילים (בעיה כי במסכי השעון הישנים המערכת תיצור את מחרוזת placeholder, מה שלא נועד). עכשיו אנחנו משתמשים בחבילה פנימית כדי לבודד את זה לחלוטין.(d5e7bd2)

גרסה 1.1.0-beta01

20 באפריל 2022

androidx.wear.watchface:watchface-*:1.1.0-beta01 משוחרר. גרסה 1.1.0-beta01 כוללת את השמירות האלה.

שינויים ב-API

  • עכשיו השיטות WatchFaceMetadataClient‏ (getUserStyleSchema, ‏ getComplicationSlotMetadataMap, ‏ getUserStyleFlavors) ו-HeadlessWatchFaceClient.getUserStyleFlavors גורמות להשלכת 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)

שינויים ב-API

  • Renderer.CanvasRenderer ו-Renderer.GlesRenderer הוצאו משימוש לטובת Renderer.CanvasRenderer2 ו-Renderer.GlesRenderer2 שתומכים ב-SharedAssets, שמועברים לשיטות הרינדור. הוספנו את ListenableCanvasRenderer2 וגם את ListenableGlesRenderer2 ל-java interop. (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 מכילה את ההוספות האלה.

שינויים ב-API

  • יכול להיות שComplicationData העדכני לא תמיד יהיה זמין (למשל, ComplicationData שפג תוקפו במטמון), לכן הרחבנו את NoDataComplication עם placeholder אופציונלי של ComplicationData והוספנו את ComplicationText.PLACEHOLDER,‏ MonochromaticImage.PLACEHOLDER,‏ SmallImage.PLACEHOLDER ו-PhotoImage.PLACEHOLDER, שאפשר להשתמש בהם רק בהקשר של placeholder של NoDataComplicationData. אם בוחרים באפשרות הזו, מומלץ להציג את הסמנים האלה באמצעות תיבות או קשתות אפורות. (I6285d)
  • הוספנו את ComplicationData.getNextChangeInstant, שמציינת את הרגע הבא אחרי הרגע של נקודת העזרה שבו כל שדה של נקודת העזרה עשוי להשתנות. המערכת משתמשת בנתון הזה באופן פנימי כדי לתזמן מסגרות לעדכונים של רכיבים. לדוגמה, אם תצוגת השעון מתעדכנת בדרך כלל פעם בדקה, הגדרת רכיב השעון 'כרונימטר' תגרום לעדכון שלה פעם בשנייה. (I7ceb2)
  • עכשיו אפשר להשתמש ב-EditorSession.watchFaceId בכל רמות ה-API. בנוסף, הערך שלו יהיה עכשיו תמיד עקבי עם הערך של WatchState.watchFaceInstanceId. (I323b9)
  • ה-API של getPendingIntentForTouchEvent כבר לא נדרש כי הבעיה הבסיסית תוקנה במסגרת, ולכן כל ממשקי ה-API הקשורים הוסרו. אין צורך לבצע פעולה מיוחדת בשעון כדי שהאירוע PendingIntents יופעל, גם אם לחצתם לאחרונה על לחצן דף הבית. (I1f2e8)
  • הוספנו את RendererParameters.isForScreenShot, שהערך שלו יהיה True אם ה-render הוא לצילום מסך. חלק מהמסכים עם אנימציות צריכים לדעת את זה כדי לבצע התאמות ולהבטיח את התוצאות הטובות ביותר. (I96d99)
  • הוספנו את WatchFaceExceptionReason אל WatchFaceException כדי לספק הקשר לגבי מה שקרה. (I01d15)
  • השדה ComplicationDataSourceService.onImmediateComplicationRequest הוסר, ובמקומו נוסף השדה ComplicationRequest.immediateResponseRequired כדי לסמן שהספק צריך להגיב במהירות (רצוי תוך פחות מ-100 אלפיות השנייה). חשוב לזכור שהפונקציונליות הזו מוגנת באמצעות ההרשאה com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE בעלת ההרשאות. (Ie6b23)
  • עדכנו את האפשרות של ערך null ב-core וב-appcompat בהתאם ל-Tiramisu DP2‏ (I0cbb7)

תיקוני באגים

  • עכשיו אפליקציית חזית השעון קורסת עם חריגה אם אימות הסכימה נכשל (Ia400f)

גרסה 1.1.0-alpha03

9 בפברואר 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha03 משוחרר. גרסה 1.1.0-alpha03 כוללת את השמירות האלה.

שינויים ב-API

  • הוספנו תמיכה ניסיונית בסכימות של סגנונות היררכיים. הוספנו נכס חדש ל-androidx.wear.watchface.style.UserStyleSetting.Option, childSettings, שבהתחלה משמש רק את ListOption. כך אפשר לתאר היררכיית סגנונות לשימוש בממשקי המשתמש של העורכים. סגנון המשתמש הבסיסי לא משתנה ועדיין הוא Map<String, ByteArray>. (Iaf6f4)
  • הוספנו את WatchFace.OverlayStyle שמאפשר לתצוגת השעון להגדיר את הרינדור של שכבת-העל של סטטוס המערכת. (I8520d)
  • הוספנו את clearWithBackgroundTintBeforeRenderingHighlightLayer כפרמטר אופציונלי חדש ליצירת עצם (constructor) של CanvasRenderer (ברירת המחדל היא false). אם הערך מוגדר כ-true, הלוח יימחק בצבע הגוון של הרקע. (Ie01e5)
  • נוספה המפתח androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED של המטא-נתונים, שמאפשר למקורות נתונים של תכונות מורכבות לציין שהם יכולים לספק ערך ברירת מחדל בלי הגדרה (Icc0d4)
  • כשעורכים תצוגת שעון, בדרך כלל יש גם מכונה אינטראקטיבית וגם מכונה ללא ראש. כדי לחסוך בזיכרון, הוספנו את Renderer.SharedAssets שמאפשר למעבד גרפיקה של תצוגת שעון לשתף נתונים שלא ניתן לשנות (למשל, טקסטורות ושכבות עיבוד (shaders)) בין מכונות. השדות GlesRenderer.setEglConfig ו-GlesRenderer.setEglDisplay הוצאו משימוש. מעולם לא התכוונו להגדיר אותם, והגדרה כזו הייתה מובילה להתנהגות לא מוגדרת. (I0d9e7)
  • הוספנו את setNameResourceId ו-setScreenReaderNameResourceId (שמפנים למשאבי מחרוזות) ל-ComplicationSlot.Builder ואת פונקציות ה-getter התואמות ב-androidx.wear.watchface.client.ComplicationSlotState. כך המערכת יכולה לאחזר את השמות של ComplicationSlots לשימוש בכלים לעריכה ובקוראי מסך. (If6c6a)
  • הפונקציות WatchfaceMetadataClient.getUserStyleSchema ו-getComplicationSlotMetadataMap גורמות עכשיו להשלכת WatchFaceException במקום RemoteException. (I86f11)
  • השם של onSynchronousComplicationRequest והפונקציות הקשורות ב-ComplicationDataSourceService השתנה ל-onImmediateComplicationRequest וכו'. (I87ba0)
  • במסכי עורכי תצוגות השעון יש הרבה פחות מקום מאשר במסכים של עורכי האפליקציות הנלוות, ולכן הגיוני לתמוך בסמלים שונים עבור עורכי תצוגות השעון. התיקון הזה מוסיף את OnWatchEditorData (שכרגע מכיל רק סמל) לכל UserStyleSettings, ובמקרים הרלוונטיים גם את כיתות האפשרויות שלהם. (If1886)
  • הוספנו את @JvmOverloads ל-constructor של ListenableGlesRenderer כדי לשפר את יכולת הפעולה ההדדית עם Java. (I2974a)

תיקוני באגים

  • ה-constructor של ListenableGlesRenderer מסומן עכשיו כראוי בתור @Throws(GlesException::class), ועכשיו אפשר להרחיב את הכיתה הזו ב-Java. (Iac6d0)
  • תיקון באג שבו לא מטפלים בצורה נכונה ב-tapAction של PhotoImageComplicationData (I1cc30)

גרסה 1.1.0-alpha02

12 בינואר 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha02 משוחרר. גרסה 1.1.0-alpha02 מכילה את ההוספות האלה.

תכונות חדשות

  • כדי לעזור בניפוי באגים ובבדיקה, עכשיו יש ל-ComplicationData ולתת-הסוגים הקשורים שיטה מעלומה של hashcode,‏ equals ו-toString, כך שקל יותר לעבוד איתם.

שינויים ב-API

  • שיטות 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 כבר לא נחשבים לניסיוניים, והם יהיו חלק מ-API היציב. המערכת תוכל לתמוך, אם רוצים, בכמה מופעים של תצוגת שעון, כל אחד עם אפשרויות עיצוב ייחודיות שהוגדרו על ידי המשתמש. הם יופיעו בבורר של תצוגות השעון. כדי להביע הסכמה לכך, תצוגת השעון צריכה לכלול את תג המטא-נתונים הבא במניפסט שלה.

        <meta-data
            android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED"
            android:value="true" />
    
  • בחלק מתצוגות השעון יש מצב שלא מתועד ב-UserStyle. כדי לתמוך בכך ובמכונות מרובות, מזהה המכונה של תצוגת השעון זמין עכשיו דרך WatchState.watchFaceInstanceId.

  • ComplicationData נשמר עכשיו במטמון כדי לאפשר להציג את התכונות הנוספות מיד אחרי הטעינה. לפעמים המערכת שומרת את ComplicationData במטמון בזיכרון, ולפעמים ספריות של צגי השעון מבצעות סריאליזציה שלו. כשמפעילים את השירות בסדרת פעולות, כל פעולת הקשה משויכת תאבד. אם זה יקרה, ComplicationData.tapActionLostDueToSerialization יחזיר את הערך true ופנים השעון צריכים להציג את התוסף בצורה שונה (למשל, באפור או שקוף למחצה) כדי לסמן שלא ניתן להקיש עליו. המערכת תשלח ComplicationData מעודכן עם tapAction בהקדם האפשרי.

  • חלק מה-ComplicationData לא צריכים להישמר במטמון למשך זמן רב. כדי לתמוך בכך, הוספנו תכונה כללית יותר ComplicationDataTimeline. אפשר להשתמש באפשרות הזו כדי לספק רצף של ComplicationData עם חלון זמן להצגה, שיישלח ללוח השעון. הנתונים האלה יכולים להישמר במטמון ולהתעדכן באופן אוטומטי. לדוגמה, תחזית מזג האוויר של היום בשעות שונות או כמה אירועים קרובים ביומן. נוספה ל-ComplicationRequestListener שיטה חדשה, onComplicationDataTimeline, שאפשר להשתמש בה כדי להחזיר את הנתונים האלה.

  • DefaultComplicationDataSourcePolicy הורחב כך שתוכלו לציין את ComplicationType למקורות הנתונים הראשי והמשני.

  • הוספנו תמיכה בספקים של סמלי שעון מסונכרנים, שבהם הסמל מתעדכן בתדירות גבוהה יותר מהרגיל, עד פעם בשנייה כשמסך השעון גלוי ולא במצב אווירה. הערה: יכול להיות שספק של תוסף סינכרוני יהיה מוגבל בשימוש בגלל בעיות של לחץ זיכרון.

  • סביר להניח שהשינויים ב-PendingIntentTapListener יבוטל כי פתרנו את הבעיה הבסיסית (לא ניתן להפעיל פעילויות במסך השעון במשך 5 שניות אחרי שלוחצים על לחצן הבית) במקום זאת במסגרת.

שינויים ב-API

  • השדה ComplicationData.isCached השתנה ל-tapActionLostDueToSerialization, והוא שימושי יותר כשצריך לקבוע אם צריך להציג את תא התוסף בצורה שונה כדי לסמן שלא ניתן להקיש עליו. (I6de2f)
  • ComplicationDataTimeline נוסף לקבוצה wear-complication-data-source. אפשר להשתמש באפשרות הזו כדי לספק רצף של ComplicationData עם חלון זמן להצגה, שיישלח ללוח השעון. הנתונים האלה יכולים להישמר במטמון ולהתעדכן באופן אוטומטי. לדוגמה, תחזית מזג האוויר של היום בשעות שונות או כמה אירועים קרובים ביומן. נוספה ל-ComplicationRequestListener שיטה חדשה, onComplicationDataTimeline, שבאמצעותה אפשר להחזיר את הנתונים האלה. יש עטיפה חדשה של Kotlin‏ SuspendingTimelineComplicationDataSourceService להשעיית שירותי מקורות נתונים. (Idecdc)
  • הוספת את PendingIntentTapListener ואת WatchFaceControlClient.getPendingIntentForTouchEvent. כך אפשר לעקוף בעיה שבה המסגרת חוסמת את הפעלת הפעילויות החדשות למשך 5 שניות אחרי לחיצה על לחצן הבית, בתצוגות שעון שצריכות להפעיל כוונות בתגובה להקשות. (I98074)
  • הוספנו מטמון ComplicationData לכל תצוגת שעון. המטרה של האפשרות הזו היא לאפשר ללוח השעון להציג את ערכי הנתונים האחרונים של התוספים בזמן הטעינה, עד שהמערכת תהיה מסוגלת לעדכן אותם. יש שיטה חדשה של API‏ WatchFaceControlClient.hasComplicationCache המיועדת ליצרני ציוד מקורי (OEM). הדבר עשוי להשפיע על האסטרטגיה של המערכת לשליחת רכיבי 'תצוגת מידע מורחבת' לתצוגת השעון. בנוסף, ל-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)
  • נוספה תמיכה בספקים של רכיבי תכונה זמינים (complications) מסונכרנים, שבהם רכיב התכונה הזמין מתעדכן בתדירות גבוהה יותר מהרגיל, עד פעם בשנייה כשמסך השעון גלוי ולא במצב אווירה. כדי להשתמש באפשרות הזו, הספק צריך לכלול מטא תג 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 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

תיקוני באגים

  • תיקון באג שבו לא מטפלים בצורה נכונה ב-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.

  • הספרייה תומכת ישירות בעיצוב של משתמשים (למשל, שינוי של לוח הצבעים, הסגנון של המחוגים, המראה של סימני השעות וכו') (ראו 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. בתרחיש שבו ה-renderer נוצר אבל ההפעלה הראשונית של 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 מכילה את ההצהרות האלה.

שינויים ב-API

  • הכיתות בחבילה androidx.wear.watchface.complications הועברו לפרויקט wear:watchface:watchface-complications חדש. לתשומת ליבכם: המשמעות היא שאתם לא יכולים לכלול את הספרייה הזו וגם גרסאות אלפא קודמות של wear:watchface:watchface-complications-data, כי תקבלו שגיאות לגבי כיתות כפולות. (I97195)
  • השם של Renderer.dump השתנה ל-Renderer.onDump, והוספה לו הערה עם @UiThread. (I44845)
  • השם של InteractiveWatchFaceClient.addWatchFaceReadyListener השתנה ל-addOnWatchFaceReadyListener והשם של removeWatchFaceReadyListener השתנה ל-removeOnWatchFaceReadyListener. (I48fea)
  • הפונקציות EditorSession‏ getComplicationsPreviewData ו-getComplicationsDataSourceInfo כבר לא הן פונקציות השהיה, אלא הן מאפייני StateFlow<> שהערך שלהם הוא null בהתחלה. ב-ListenableEditorSession, השדות getListenableComplicationPreviewData ו-getListenableComplicationsProviderInfo הוסרו לטובת האובייקטים החדשים מסוג StateFlow<> מהכיתה הבסיסית. אם אתם צריכים להאזין לשינויים בקוד Java, מומלץ להשתמש ב-androidx.lifecycle.FlowLiveDataConversions.asLiveData כדי להמיר ל-LiveData<>. (Ic5483)

גרסה 1.0.0-alpha23

29 בספטמבר 2021

androidx.wear.watchface:watchface-*:1.0.0-alpha23 משוחרר. גרסה 1.0.0-alpha23 מכילה את ההצהרות האלה.

תכונות חדשות

ספריית חזית השעון היא עכשיו קבוצת ספריות אחת, וכתוצאה מכך הספריות הועברו ותצטרכו לעדכן את ייבוא ה-Gradle באופן הבא:

מכשיר ישן חדש
androidx.wear:wear-complications-data androidx.wear.watchface:watchface-complications-data
androidx.wear:wear-complications-data-source androidx.wear.watchface:watchface-complications-data-source
androidx.wear:wear-watchface androidx.wear.watchface:watchface
androidx.wear:wear-watchface-complications-rendering androidx.wear.watchface:watchface-complications-rendering
androidx.wear:wear-watchface-client androidx.wear.watchface:watchface-client
androidx.wear:wear-watchface-client-guava androidx.wear.watchface:watchface-client-guava
androidx.wear:wear-watchface-data androidx.wear.watchface:watchface-data
androidx.wear:wear-watchface-editor androidx.wear.watchface:watchface-editor
androidx.wear:wear-watchface-editor-guava androidx.wear.watchface:watchface-editor-guava
androidx.wear:wear-watchface-guava androidx.wear.watchface:watchface-guava
androidx.wear:wear-watchface-style androidx.wear.watchface:watchface-style

שינויים ב-API

  • העברת הספריות הנפרדות של androidx.wear Watchface ו-complications לקבוצת הספריות androidx.wear.watchface. (b25f3c0)
  • הוספנו את EditorRequest.canWatchFaceSupportHeadlessEditing כדי לאפשר ללקוח לדעת אם עורך של תצוגת שעון תומך בעריכה ללא גוף (headless). שימו לב: יהיו כמה תוצאות שליליות שגויות כי התמיכה נוספה ב-asop/1756809, אבל היא תחזיר את הערך הנכון לכל תצוגות השעון העתידיות. (ca55590)
  • ל-Renderer יש עכשיו שיטת dump()‎ שאפשר לשנות כדי להוסיף נתונים מותאמים אישית למידע שנוצר על ידי שירות הפעילות של מעטפת ABD dumpsys‏ WatchFaceService. (95235f9)
  • הפונקציה InteractiveWatchFaceClient.addWatchFaceReadyListener מציינת עכשיו את המבצע קודם. (563ac2f)
  • ה-StateFlowCompatHelper הוסר. במקום זאת צריך להשתמש ב-asLiveData‏ (androidx.lifecycle.asLiveData). (bd35d3)
  • לא ניתן יותר לשנות את CurrentUserStyleRepository.userStyle. (I44889)
  • השם של WatchFaceReadyListener השתנה ל-OnWatchFaceReadyListener. (Ic12a9)

תיקוני באגים

  • צריך להשתמש ב-InteractiveInstanceManager.deleteInstance כדי לקרוא ל-onDestroy. הפעולה הזו נדרשת כדי לוודא שמערכת האיסוף האוטומטי של נתונים מיותרים תאסוף את הנתונים מ-InteractiveWatchFaceImpl.‏ (fce4af8, b/199485839)