แสดงการ์ด "กำลังเล่น"

แอปทีวีที่เปิดเสียงอาจเล่นต่อไปหลังจากที่ผู้ใช้กลับไปที่หน้าจอหลัก หรือ จะเปลี่ยนไปใช้แอปอื่น หากต้องการทำเช่นนั้น แอปต้องมีการ์ดกำลังเล่นในบ้าน บนหน้าจอ การ์ดนี้ช่วยให้ผู้ใช้ทราบว่าเสียงมาจากไหนและกลับไปยังแอปเพื่อ ควบคุมการเล่นสื่อ

เมื่อใดก็ตามที่มีการใช้งาน MediaSession คือ เฟรมเวิร์กของ Android จะแสดงการ์ดกำลังเล่นบนหน้าจอหลัก การ์ด ประกอบด้วยข้อมูลเมตาของสื่อ เช่น ปกอัลบั้ม ชื่อ และไอคอนแอป เมื่อผู้ใช้เลือกการ์ด ระบบจะเปิดแอป

การ์ด "กำลังเล่น"

หลังจากที่คุณใช้เซสชันสื่อ ให้ตั้งค่า เซสชันเพื่อใช้งานอยู่ และขอโฟกัสเสียง การ์ดกำลังเล่นจะปรากฏขึ้น

หมายเหตุ: การ์ดกำลังเล่นจะแสดงสำหรับสื่อเท่านั้น กับ FLAG_HANDLES_TRANSPORT_CONTROLS ตั้งค่าแฟล็กแล้ว เลิกใช้งานแฟล็กนี้ใน API ระดับ 26 แล้ว อย่างไรก็ตาม อาจยังต้องใช้ Flag นี้ในอุปกรณ์รุ่นเก่าเพื่อให้เข้ากันได้กับอุปกรณ์รุ่นเก่า

การ์ดจะถูกนำออกจากหน้าจอ Launcher เมื่อ setActive(false) การเรียกจะเป็นการปิดใช้งานเซสชันสื่อหรือเมื่อแอปอื่นเริ่มเล่นสื่อ หากการเล่นคือ หยุดโดยสมบูรณ์และไม่มีสื่อที่ใช้งานอยู่ ให้ปิดใช้งานเซสชันสื่อ ทันที หากการเล่นหยุดชั่วคราว ให้ปิดใช้งานเซสชันสื่อหลังจากการหน่วงเวลา คือ 5-30 นาที

อัปเดตบัตร

เมื่อใดก็ตามที่แอปอัปเดตสถานะการเล่นใน MediaSession การ์ดกำลังเล่นจะอัปเดตเพื่อแสดงสถานะของสื่อปัจจุบัน ดูวิธีการได้ที่ อัปเดตสถานะการเล่น

ในทำนองเดียวกัน แอปของคุณสามารถอัปเดต MediaMetadata เพื่อระบุข้อมูล ลงในการ์ดกำลังเล่นเกี่ยวกับสื่อปัจจุบัน เช่น ชื่อ ชื่อรอง และไอคอนต่างๆ ดูวิธีการได้ที่ อัปเดตข้อมูลเมตาของสื่อ

ตอบสนองต่อการดำเนินการของผู้ใช้

เมื่อผู้ใช้เลือกการ์ดกำลังเล่น ระบบจะเปิดแอปที่เป็นเจ้าของ เซสชัน หากแอปของคุณมี PendingIntent ถึง setSessionActivity(), ระบบจะเปิดกิจกรรมที่คุณระบุ ดังที่ปรากฏในข้อมูลโค้ดต่อไปนี้ หากไม่เป็นเช่นนั้น Intent เริ่มต้นของระบบจะเปิดขึ้น กิจกรรมที่คุณระบุต้องมีตัวควบคุมการเล่นที่ ช่วยให้ผู้ใช้หยุดชั่วคราวหรือหยุดเล่นได้

Kotlin

val pi: PendingIntent = Intent(context, MyActivity::class.java).let { intent ->
    PendingIntent.getActivity(
            context, 99 /*request code*/,
            intent,
            PendingIntent.FLAG_UPDATE_CURRENT
    )
}
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);

Use Case ที่ยอมรับ

ควรใช้การ์ดกำลังเล่นในกรณีที่ผู้ใช้คาดหวังให้เล่นเสียงต่อเท่านั้น เล่นขณะล็อกหน้าจอหรือขณะใช้แอปอื่นเมื่อออกจากแอป การเล่นวิดีโอหรือเสียงจากเกมควร หยุดชั่วคราว เว้นแต่แอปของคุณจะผสานรวมและเป็นไปตามข้อกำหนดการแสดงภาพซ้อนภาพ