הגדרת Watch Face Format

במדריך הזה מפורטים שלבים לגבי הכלים שנדרשים כדי להגדיר תצוגת שעון. באמצעות Watch Face Format, הצעות למבנה הפרויקט מדריך מפורט לשימוש בכלים ליצירת המבנה הזה.

דרישות מוקדמות

כדי להכין את סביבת הפיתוח לשימוש ב-Watch Face Format: להשלים את שלבי ההגדרה הבאים:

  1. מתקינים את ה-SDK ל-Android 14 (רמת API 34) ואילך. אם תצוגת השעון לא מסתמכת על תכונות או התנהגות שספציפיות לגרסה 2, ניתן במקום זאת, צריך להתקין את ה-SDK ל-Android 13 (רמת API 33).

    ה-SDK מכיל כלים נדרשים אחרים, כולל aapt2 ו-android.jar.

  2. לחלופין, אפשר להתקין את Android Studio, שיכול לספק גם את הפרטים הבאים הכלים שלנו.

מבנה הפרויקט

כשיוצרים תצוגת שעון בהתאמה אישית עם Watch Face Format, קובץ App Bundle שכולל את הקובץ של תצוגת השעון צריך להיות נפרד לחלוטין מקובץ Android App Bundle שמכיל את הלוגיקה של האפליקציה ל-Wear OS. אפליקציה חנויות, כולל Google Play, מונעות העלאה של קובץ Android App Bundle שכולל לוגיקה של Wear OS וגם תצוגת שעון בהתאמה אישית.

יצירת חבילה של תצוגת שעון

כדי ליצור קובץ Android App Bundle שכולל קובץ של תצוגת שעון, צריך להשלים את בשלבים הבאים.

הצהרה על שימוש ב-Watch Face Format

בקובץ המניפסט של האפליקציה החדשה (AndroidManifest.xml), יש להוסיף אפליקציה המאפיין שמציין את השימוש שלך ב-Watch Face Format. אלא אם רוצים הגבלת הגישה לתצוגת השעון במכשירים עם Wear OS מגרסה 5 ואילך, ליצור שתי חבילות APK שונות לתצוגת השעון, אחת שתומכת בגרסה 2 והשנייה תומך בגרסה 1. למידע נוסף על הגדרת גרסאות של האפליקציה שלכם.

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest ...>
    <!--
        Use SDK version 34 for version 2 of WFF, and SDK version 33 for version
        1 of WFF
    -->
    <uses-sdk
        android:minSdkVersion="34"
        android:targetSdkVersion="34" />

    <!--
        WFF is a resource-only format, so the hasCode attribute should be set to
        false to reflect this.
    -->
    <application
        android:label="@string/watch_face_name"
        android:hasCode="false"
        ...>
        <property
            android:name="com.google.wear.watchface.format.version"
            android:value="2" />
    </application>
</manifest>

הצהרה על מטא-נתונים של תצוגת השעון

בספריית המשאבים res/xml של האפליקציה, צריך ליצור קובץ חדש בשם watch_face_info.xml. כאן מגדירים את המטא-נתונים של תצוגת השעון:

<?xml version="1.0" encoding="utf-8"?>
<WatchFaceInfo>
    <!-- Only "Preview" is required. -->
    <Preview value="@drawable/watch_face_preview" />
    <Category value="CATEGORY_EMPTY" />
    <AvailableInRetail value="true" />
    <MultipleInstancesAllowed value="true" />
    <Editable value="true" />
</WatchFaceInfo>

השדות בקובץ הזה מייצגים את הפרטים הבאים:

Preview
הפניה אל הפריט להזזה שמכיל תמונת תצוגה מקדימה של תצוגת השעון.
Category

הגדרת הקטגוריה של תצוגת השעון. חייב להיות מחרוזת או הפניה מחרוזת, למשל @string/ref_name. כל יצרן מכשיר יכול להגדיר קבוצת קטגוריות של תצוגות שעון.

ערך ברירת המחדל: empty_category_meta, שמקבץ את תצוגת השעון הזו עם "קטגוריה ריקה" אחרת תצוגות השעון בחלק התחתון של הכלי לבחירת תצוגת השעון צפייה.

AvailableInRetail

אם תצוגת השעון זמינה במצב ההדגמה לקמעונאים של המכשיר. חייב להיות ערך בוליאני או הפניה לערך בוליאני, כמו @bool/watch_face_available_in_retail

ערך ברירת המחדל: false

MultipleInstancesAllowed

אם לתצוגת השעון יכולים להיות כמה מועדפים. חייב להיות ערך בוליאני, או הפניה לערך בוליאני כמו @bool/watch_face_multiple_instances_allowed

ערך ברירת המחדל: false

Editable

אם תצוגת השעון ניתנת לעריכה, כלומר בתצוגת השעון יש או לפחות רכיב אחד לא קבוע. משמש להצגה או להסתיר את הלחצן Edit (עריכה) של תצוגת השעון ברשימת המועדפים.

ערך ברירת המחדל: false

הצהרה על השם של תצוגת השעון

בקובץ המניפסט של האפליקציה (AndroidManifest.xml), יש להגדיר את הערך android:label משויך לשם של תצוגת השעון:

<application android:label="@string/watch_face_name" >

הצהרה על תמיכה בצורות של תצוגות השעון (אופציונלי)

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

בספריית המשאבים res/xml של האפליקציה, צריך להצהיר על קבוצת תצוגת השעון צורות שנתמכות ב-watch_face_shapes.xml:

<WatchFaces>
    <!-- The default shape is "CIRCLE". -->
    <WatchFace shape="CIRCLE" width="300" height="300"
               file="@raw/watchface"/>
    <WatchFace shape="CIRCLE" width="450" height="450"
               file="@raw/watchface_large_circle"/>
    <WatchFace shape="RECTANGLE" width="380" height="400"
               file="@raw/watchface_rectangle"/>
</WatchFaces>

הצהרה על הפרטים של תצוגת השעון

בספריית המשאבים res/raw של האפליקציה, צריך ליצור קבצים שתואמים ערכי המאפיינים file משמשים להצהרה על תמיכה בתצוגת השעון צורות.

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

בהמשך לדוגמה שבדף הזה, קובצי ה-XML הגולמיים יהיו:

  • res/raw/watchface.xml
  • res/raw/watchface_large_circle.xml
  • res/raw/watchface_rectangle.xml

הרכיב הבסיסי (root) הוא תמיד WatchFace:

<WatchFace width="450" height="450" shape="CIRCLE">
    <!-- Remainder of your Watch Face Format definition here. -->
    <!-- If this file defines a watch face for a circular device shape, place
         resources used in this file in the "/res/drawable-nodpi" directory. -->
    <!-- If this file defines a watch face for a rectangular or other
         non-circular shape, place resources ued in this file in the
         "/res/drawable-notround-nodpi" directory. -->
</WatchFace>

זיהוי בעל התוכן הדיגיטלי של תצוגת השעון (אופציונלי)

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

<application ...>
    ...
    <property
        android:name="com.google.wear.watchface.format.publisher"
        android:value="{toolName}-{toolVersion}" />
</application>

בדיקת התקינות והביצועים של תצוגת השעון

במהלך הפיתוח ולפני ההעלאה ל-Google Play, צריך להשתמש בכלי התיקוף כלים כדי לבדוק שתצוגת השעון נקיה משגיאות, פועל בהתאם להמלצות השימוש בזיכרון.

יצירת App Bundle של תצוגת השעון

כדי ליצור את קובץ Android App Bundle שמכיל את תצוגת השעון, צריך להשתמש ב מערכת build של Gradle. למידע נוסף על בניית אפליקציה באמצעות Gradle.

אפשר לראות זאת בדוגמאות של GitHub.