הצגת כרטיס של 'מה שומעים עכשיו?'

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

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

קלף 'מה שומעים עכשיו?'

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

הערה: הכרטיס מה שומעים עכשיו מוצג רק בסשן מדיה עם ההגדרה FLAG_HANDLES_TRANSPORT_CONTROLS. הדגל הזה הוצא משימוש ברמת API‏ 26. עם זאת, יכול להיות שעדיין יהיה צורך בדגל הזה במכשירים ישנים יותר לצורך תאימות לאחור.

הכרטיס מוסר ממסך ההפעלה כששיחה משביתה את סשן המדיה או כשמפעילים הפעלה של מדיה באפליקציה אחרת.setActive(false) אם ההפעלה נעצרת לגמרי ואין מדיה פעילה, צריך להשבית את סשן המדיה באופן מיידי. אם ההפעלה מושהית, צריך להשבית את סשן המדיה אחרי השהיה, בדרך כלל של 5 עד 30 דקות.

עדכון הכרטיס

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

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

תגובה לפעולת משתמש

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

Kotlin

val pi: PendingIntent = Intent(context, MyActivity::class.java).let { intent ->
    PendingIntent.getActivity(
        context, 99 /*request code*/,
        intent,
        PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
    )
}
session.setSessionActivity(pi)

Java

Intent intent = new Intent(context, MyActivity.class);
PendingIntent pi = PendingIntent.getActivity(context, 99 /*request code*/,
        intent, PendingIntent.FLAG_UPDATE_CURRENT);
session.setSessionActivity(pi);

תרחישי שימוש מקובלים

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