השהיה והמשך של הפעלת מדיה באמצעות מקש הרווח במקלדת

סמל של דירוג ארבעה כוכבים

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

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

שיטות מומלצות

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

אלמנטים

  • KEYCODE_SPACE: קבוע של קוד המקש עבור מקש הרווח.
  • onPreviewKeyEvent: Modifier שמאפשרת לרכיב ליירט אירועי מקשי חומרה כשהוא (או אחד מרכיבי הצאצא שלו) נמצא במוקד.
  • onKeyEvent: בדומה ל-onPreviewKeyEvent, המאפיין Modifier הזה מאפשר לרכיב ליירט אירועים של מקשי חומרה כשהוא (או אחד מרכיבי הצאצא שלו) נמצא בפוקוס.

צעדים

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

1. המתנה לאירועים של המקלדת

באמצעות Jetpack Compose, אפשר להשתמש במגדיר onPreviewKeyEvent או במגדיר onKeyEvent בתוך הרכיב שמנהל את הקשת המקש.

ההבדל העיקרי בין שני משני האירועים הוא לאן האירוע נשלח אם המשנה לא צורך אותו:

  • onPreviewKeyEvent — שולח את האירוע לצאצא הראשון שלו.
  • onKeyEvent — שולח את האירוע לרכיב ההורה של הרכיב שאפשר להרכיב.

2. סינון של לחיצות על מקש הרווח וטיפול בהן

בתוך lambda של משנה onPreviewKeyEvent או onKeyEvent, מסננים אירועי מקשים שבהם שחרור המקש (KeyEventType.KeyUp) תואם למקש הרווח (Key.Spacebar).

מחזירים true אם הקוד מטפל באירוע ולא רוצים שהאירוע יתפשט הלאה. מחזירה false כדי לאפשר לרכיבים אחרים לטפל באירוע.

  • אפשרות א': שימוש ב-onPreviewKeyEvent

    Column(
        modifier = Modifier.onPreviewKeyEvent { event ->
            if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
                // Handle spacebar keypress to pause/resume playback.
                true
            } else {
                false
            }
        }
    ) {
        // Content
    }

  • אפשרות ב': שימוש ב-onKeyEvent

    Column(
        modifier = Modifier.onKeyEvent { event ->
            if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
                // Handle spacebar keypress to pause/resume playback.
                true
            } else {
                false
            }
        }
    ) {
        // Content
    }

תוצאות

האפליקציה יכולה עכשיו להגיב ללחיצות על מקש הרווח כדי להשהות ולהפעיל מחדש סרטון או מדיה אחרת.

מקורות מידע נוספים

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