הפעלה וניפוי באגים של משבצת

האריחים הם לא אפליקציות, ולכן הם נפרסים ומופעלים באמצעות מנגנונים שונים. כשאפשרויות למפתחים מופעלות במכשיר (התכונות האלה מופעלות באמולטורים כברירת מחדל), תכונות נוספות שתומכות בפיתוח של משבצות הופכות זמינות לשימוש גם ב-Android Studio וגם ב-adb.

פריסת כרטיסי מידע

כדי לפרוס את הלחצן, אפשר להתקין את האפליקציה במכשיר פיזי או באמולטור באמצעות Android Studio, כמו שמתואר במאמר Build and run your app. לאחר מכן, פועלים לפי אותם השלבים כמו משתמשים רגילים כדי להוסיף את הלחצן לגלגל הלחצנים באופן ידני.

במהלך פיתוח פעיל, יכול להיות שיהיה לכם קל ומהיר יותר להשתמש בתכונה "הגדרת הרצה/ניפוי באגים של Wear OS Tile" ב-Android Studio. השיטה הזו מאפשרת לפרוס ולהפעיל את המשבצת באופן אוטומטי, כך שאפשר ליצור איתה אינטראקציה באופן מיידי בלי לבצע פעולות ידניות נוספות.

יצירת הגדרה באופן אוטומטי

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

צילום מסך עם חץ אדום שמצביע על הסמל '▷' בשוליים
לוחצים על '▷' בשוליים
צילום מסך עם חץ אדום שמצביע על התפריט הנפתח של הגדרת ההרצה, ואפשרות ההגדרה TestTileService שמודגשת באדום
נוצרת באופן אוטומטי 'הגדרת הרצה'

יצירת הגדרה באופן ידני

אם ההגדרה האוטומטית לא עובדת, או אם אתם רוצים יותר שליטה על התוצאה, אפשר להיעזר בהוראות הבאות. צילומי המסך הם מ-Android Studio Meerkat‏ (2024.3.1).

  1. בוחרים באפשרות '⋮' ('המבורגר') מסרגל הכותרת.

    צילום מסך עם חץ אדום שמצביע על האפשרות '⋮' (תפריט המבורגר) מסרגל הכותרת.
  2. בוחרים באפשרות 'עריכה…'.

    האפשרות 'עריכה…' היא הראשונה בקטע 'הגדרה' של הרשימה הנפתחת.
  3. בתיבת הדו-שיח שמופיעה, לוחצים על '+' כדי להוסיף הגדרה.

    צילום מסך עם חץ אדום שמצביע על '+'.
  4. בוחרים באפשרות Wear OS Tile (משבצת Wear OS) בתור סוג ההגדרה החדשה.

    צילום מסך עם חץ אדום שמצביע על אפשרות ההגדרה 'Tile של Wear OS'.
  5. מזינים שם להגדרה ובוחרים את המודול והאריח המתאימים.

    צילום מסך עם שלוש חצים אדומים שמצביעים על אזורים בחלון הדו-שיח.
  6. מקישים על 'אישור'. ההגדרה שלכם תופיע בסרגל הכותרת. מקישים על הלחצן "▷" ("הפעלה"), והאריח ייפרס ויופעל.

תצוגה מקדימה של כרטיסי מידע ב-Android Studio

החל מ-Android Studio Koala Feature Drop, אפשר לראות תמונות מצב של כרטיסי המידע של אפליקציית Wear OS. החלונית הזו שימושית במיוחד אם המראה של המשבצת משתנה בתגובה לתנאים, למשל תוכן שונה בהתאם לגודל המסך של המכשיר, או אירוע ספורט שמגיע להפסקה בין המחציות.

השמות של הקבוצות בחלונית התצוגה המקדימה זהים לשם הקבוצה שצוין בהערה של התצוגה המקדימה
חלונית התצוגה המקדימה של המשבצות ב-Android Studio.

הוספת יחסי תלות

צריך לכלול את יחסי התלות הבאים בקובץ build.gradle.kts או build.gradle של האפליקציה:

dependencies {
    implementation("androidx.wear.tiles:tiles-tooling-preview:1.5.0")
    debugImplementation("androidx.wear.tiles:tiles-tooling:1.5.0")
    implementation("androidx.wear:wear-tooling-preview:1.0.0")
}

הגדרת תצוגות מקדימות של אריחים

כדי לראות תצוגה מקדימה של מראה הרכיב במסכים בגדלים שונים של Wear OS, מוסיפים את ההערה @Preview ומעבירים את הפרמטר device. הערה: האנוטציה @Preview הזו היא מחבילה שונה מזו שבה משתמשים עבור תצוגות מקדימות של קומפוזיציות.

import androidx.wear.tiles.tooling.preview.Preview

@Preview(device = WearDevices.SMALL_ROUND)
@Preview(device = WearDevices.LARGE_ROUND)
fun tilePreview(context: Context) = TilePreviewData(
    onTileRequest = { request ->
        TilePreviewHelper.singleTimelineEntryTileBuilder(
            buildMyTileLayout()
        ).build()
    }
)

הוספה ורישום של משאבים

אם הרכיב שלכם משתמש במשאבי Android, תצטרכו לרשום אותם בפרמטר onTileResourceRequest של TilePreviewData, כמו שמוצג בקטע הקוד הבא:

import androidx.wear.tiles.tooling.preview.Preview

@Preview(device = WearDevices.SMALL_ROUND)
fun previewWithResources(context: Context) = TilePreviewData(
    onTileResourceRequest = { request ->
        Resources.Builder()
            .setVersion(myResourcesVersion)
            .addIdToImageMapping(
                    myImageId, getImageById(R.drawable.myDrawableImageId))
            .build()
    },
    onTileRequest = { request ->
        TilePreviewHelper.singleTimelineEntryTileBuilder(
            buildMyTileLayout()
        ).build()
    }
)

fun getImageById(
    @DrawableRes id: Int,
): ImageResource =
    ImageResource.Builder()
        .setAndroidResourceByResId(
            AndroidImageResourceByResId.Builder()
                .setResourceId(id)
                .build(),
        )
        .build()

הצגת ערכים ספציפיים ממקורות נתונים של פלטפורמות

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

כדי להציג ערך ספציפי, מגדירים את הפרמטר platformDataValues כשיוצרים את האובייקט TilePreviewData, כמו שמוצג בקטע הקוד הבא:

import androidx.wear.tiles.tooling.preview.Preview

@Preview(device = WearDevices.SMALL_ROUND)
fun previewWithPlatformOverride(context: Context) = TilePreviewData(
    platformDataValues = PlatformDataValues.of(
        PlatformHealthSources.Keys.HEART_RATE_BPM,
        DynamicDataBuilders.DynamicDataValue.fromFloat(160f)
    ),
    onTileRequest = { request ->
        TilePreviewHelper.singleTimelineEntryTileBuilder(
            buildMyTileLayout()
        ).build()
    }
)

שינוי כרטיסי מידע באמצעות adb

אפשר להשתמש ב-adb כדי להתקין, להסיר ולהפעיל אריחים באופן פרוגרמטי במהלך הפיתוח.

בפקודות הבאות, ComponentName היא מחרוזת שמורכבת משם החבילה וממחלקה בתוך החבילה הזו, לדוגמה com.example.wear.tiles/com.example.wear.tiles.PreviewTileService.

add-tile

מוסיפה משבצת שסופקה על ידי COMPONENT_NAME ומחזירה את האינדקס.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation add-tile --ecn component [COMPONENT_NAME]

פלט לדוגמה:

Broadcast completed: result=1, data="Index=[0]"

אם משבצת כבר קיימת בקרוסלה, היא מוסרת ומוחזרת לאותו מיקום. אחרת, היא מוכנסת במיקום Index[0]. בנוסף, אם הקרוסלה מלאה, המשבצת האחרונה מוסרת כדי לפנות מקום למשבצת החדשה.

show-tile

הפעלת המשבצת באינדקס TILE_INDEX.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SYSUI --es operation show-tile --ei index [TILE_INDEX]

פלט לדוגמה:

Broadcast completed: result=1

remove-tile

מסיר את כל המופעים של כרטיסי המידע בקרוסלה שמשויכים ל-COMPONENT_NAME.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation remove-tile --ecn component [COMPONENT_NAME]

פלט לדוגמה:

result=1, data="Tile(s) removed."

ערכים מוחזרים

  • result=0: אף מקלט שידור לא הגיב לפקודה הזו, כנראה בגלל שגרסת Wear OS ישנה מדי או שתהליך הניפוי לא פועל.
  • result=1: הצלחה.
  • result>1: שגיאה.