Now Playing 카드 표시

오디오를 재생하는 TV 앱은 사용자가 홈 화면으로 돌아가거나 다른 앱으로 전환한 후에도 오디오를 계속 재생할 수 있습니다. 오디오를 재생하려면 앱이 홈 화면에 Now Playing 카드를 제공해야 합니다. 이 카드를 통해 사용자는 오디오 출처를 파악하고 앱으로 돌아와 미디어 재생을 제어할 수 있습니다.

활성 MediaSession가 있을 때마다 Android 프레임워크는 홈 화면에 Now Playing 카드를 표시합니다. 카드에는 앨범 아트, 제목, 앱 아이콘과 같은 미디어 메타데이터가 포함됩니다. 사용자가 카드를 선택하면 시스템에서 앱을 엽니다.

Now Playing 카드

미디어 세션을 구현하고 세션을 활성으로 설정하고 오디오 포커스를 요청하면 Now Playing 카드가 표시됩니다.

참고: Now Playing 카드는 FLAG_HANDLES_TRANSPORT_CONTROLS 플래그가 설정된 미디어 세션에만 표시됩니다. 이 플래그는 API 수준 26에서 지원 중단되었습니다. 그러나 이전 버전과의 호환성을 위해 이전 기기에서 여전히 이 플래그가 필요할 수 있습니다.

setActive(false) 호출이 미디어 세션을 비활성화하거나 다른 앱이 미디어 재생을 시작하면 카드가 런처 화면에서 삭제됩니다. 재생이 완전히 중지되고 활성 미디어가 없으면 미디어 세션을 즉시 비활성화합니다. 재생이 일시중지된 경우 대개 5~30분의 지연 시간 후에 미디어 세션을 비활성화합니다.

카드 업데이트

앱이 MediaSession에서 재생 상태를 업데이트할 때마다 Now Playing 카드가 업데이트되어 현재 미디어의 상태가 표시됩니다. 방법을 알아보려면 재생 상태 업데이트를 참고하세요.

마찬가지로 앱은 MediaMetadata를 업데이트하여 Now Playing 카드에 제목, 부제목, 다양한 아이콘 등 현재 미디어에 관한 정보를 제공할 수 있습니다. 방법은 미디어 메타데이터 업데이트를 참고하세요.

사용자 작업에 반응

사용자가 Now Playing 카드를 선택하면 시스템에서 세션을 소유한 앱을 엽니다. 앱에서 setSessionActivity()PendingIntent를 제공하면 시스템은 다음 코드 스니펫과 같이 개발자가 지정한 활동을 실행합니다. 그러지 않으면 기본 시스템 인텐트가 열립니다. 개발자가 지정하는 활동은 사용자가 재생을 일시중지하거나 중지할 수 있는 재생 컨트롤을 제공해야 합니다.

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

허용되는 사용 사례

Now Playing 카드는 사용자가 앱을 종료할 때도 백그라운드에서 오디오가 계속 재생될 것으로 기대하는 경우에만 사용해야 합니다. 앱이 PIP 모드와 통합되고 호환되지 않는 한 게임의 동영상 재생 또는 사운드는 항상 일시중지되어야 합니다.