TV 앱은 런처 또는 백그라운드에서 미디어를 재생할 때 Now Playing 카드를 표시해야 합니다. 이 카드를 통해 사용자는 현재 미디어를 재생 중인 앱으로 돌아갈 수 있습니다.
활성 MediaSession
가 있으면 Android 프레임워크는 홈 화면에 Now Playing 카드를 표시합니다.
이 카드에는 앨범아트, 제목, 앱 아이콘과 같은 미디어 메타데이터가 포함되어 있습니다.
사용자가 카드를 선택하면 시스템에서 앱을 엽니다.
MediaSession
클래스를 사용하여 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);