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