Hiển thị thẻ Phát hiện nhạc

Ứng dụng TV phải hiển thị thẻ Phát hiện nhạc khi phát nội dung nghe nhìn phía sau trình chạy hoặc trong nền. Thẻ này cho phép người dùng quay lại ứng dụng hiện đang phát nội dung nghe nhìn.

Khung Android sẽ hiển thị thẻ Phát hiện nhạc trên màn hình chính khi có một MediaSession hoạt động. Thẻ này chứa siêu dữ liệu đa phương tiện như ảnh bìa đĩa nhạc, tiêu đề và biểu tượng ứng dụng. Khi người dùng chọn thẻ, hệ thống sẽ mở ứng dụng đó.

Bạn có thể dùng lớp MediaSession để triển khai thẻ Phát hiện nhạc (Now Playing).

Hình 1. Hiển thị thẻ Phát hiện nhạc khi phát nội dung đa phương tiện trong nền.

Thẻ Phát hiện nhạc

Sau khi bạn triển khai một phiên phát nội dung nghe nhìn, đặt phiên đó thành đang hoạt động và yêu cầu quyền phát âm thanh, thẻ Phát hiện nhạc sẽ xuất hiện.

Lưu ý: Thẻ Phát hiện nhạc chỉ hiển thị cho phiên phát nội dung đa phương tiện có cờ FLAG_HANDLES_TRANSPORT_CONTROLS được đặt. Cờ này không còn được dùng trên API cấp 26 nữa. Tuy nhiên, vẫn có thể cần cờ này trên các thiết bị cũ để có khả năng tương thích ngược.

Thẻ này sẽ bị xoá khỏi màn hình trình chạy khi lệnh gọi setActive(false) huỷ kích hoạt phiên phát nội dung đa phương tiện hoặc khi một ứng dụng khác bắt đầu phát nội dung đa phương tiện. Nếu chế độ phát hoàn toàn dừng và không có nội dung nghe nhìn nào đang hoạt động, hãy huỷ kích hoạt phiên phát nội dung nghe nhìn ngay lập tức. Nếu chế độ phát bị tạm dừng, hãy huỷ kích hoạt phiên phát nội dung đa phương tiện sau một khoảng thời gian trễ, thường là từ 5 đến 30 phút.

Cập nhật thẻ

Bất cứ khi nào ứng dụng cập nhật trạng thái phát trong MediaSession, thẻ Phát hiện nhạc (Now Playing) sẽ cập nhật để cho thấy trạng thái của nội dung nghe nhìn hiện tại. Để tìm hiểu cách thực hiện việc này, hãy xem phần Cập nhật trạng thái phát.

Tương tự, ứng dụng của bạn có thể cập nhật MediaMetadata để cung cấp thông tin cho thẻ Phát hiện nhạc về nội dung nghe nhìn hiện tại, chẳng hạn như tên, phụ đề và nhiều biểu tượng. Để tìm hiểu cách thực hiện việc này, hãy xem phần Cập nhật siêu dữ liệu đa phương tiện.

Phản hồi hành động của người dùng

Khi người dùng chọn thẻ Phát hiện nhạc, hệ thống sẽ mở ứng dụng sở hữu phiên này. Nếu ứng dụng của bạn cung cấp PendingIntent cho setSessionActivity(), hệ thống sẽ chạy hoạt động mà bạn chỉ định, như minh hoạ trong đoạn mã sau. Nếu không, ý định mặc định của hệ thống sẽ mở ra. Hoạt động bạn chỉ định phải cung cấp bộ điều khiển chế độ phát cho phép người dùng tạm dừng hoặc dừng phát.

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);