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

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

תגובה לאירועים של הקשה על מקש

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

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

פיתוח נייטיב

ב-Jetpack פיתוח נייטיב, משתמשים בעיבוד onPreviewKeyEvent או בעיבוד onKeyEvent בפריסה שמנהלת את הקשה על המקש:

Column(modifier = Modifier.onPreviewKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp) {
        ...
    }
    ...
})

או

Column(modifier = Modifier.onKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp) {
        ...
    }
    ...
})

צפיות

בפעילות באפליקציה, מחליפים את ה-method‏ onKeyUp():

Kotlin

override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
    ...
}

Java

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    ...
}

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

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

בתוך שיטות השינוי onPreviewKeyEvent ו-onKeyEvent או שיטת התצוגות onKeyUp(), מסננים לפי KeyEvent.KEYCODE_SPACE כדי לשלוח את האירוע הנכון לרכיב המדיה:

פיתוח נייטיב

Column(modifier = Modifier.onPreviewKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
        ...
    }
    ...
})

או

Column(modifier = Modifier.onKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
        ...
    }
    ...
})

צפיות

Kotlin

if (keyCode == KeyEvent.KEYCODE_SPACE) {
    togglePlayback()
    return true
}
return false

Java

if (keyCode == KeyEvent.KEYCODE_SPACE) {
    togglePlayback();
    return true;
}
return false;

נקודות עיקריות

  • KEYCODE_SPACE: קבוע של קוד המקש עבור מקש הרווח.

פיתוח נייטיב

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

צפיות

  • onKeyUp(): הגורם המטפל באירועים מופעל כשמקש משוחרר ולא מטופל על ידי תצוגה (כמו TextView) בתוך פעילות.

תוצאות

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