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

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

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

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

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

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

אלמנטים

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

צעדים

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

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

ב-Jetpack Compose, אתם יכולים להשתמש במשתנה onPreviewKeyEvent או onKeyEvent ברכיב שמנהל את הלחיצה על המקש.

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

  • ‫onPreviewKeyEvent – שולח את האירוע לצאצא הראשון שלו.
  • ‫onKeyEvent – שולח את האירוע לרכיב ה-composable הראשי.

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

בתוך פונקציית הלמבדה של המשתנה 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
    }

תוצאות

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

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

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