오디오를 재생하는 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 카드를 선택하면 시스템에서 세션을 소유한
앱을 엽니다. 앱에서
PendingIntent를
setSessionActivity()에 제공하면
다음 코드 스니펫에 표시된 대로 지정된 활동을 시스템에서 실행합니다. 앱에서 인텐트를 제공하지 않으면
기본 시스템 인텐트가 열립니다. 지정된 활동은 사용자가 재생을 일시 중지하거나 중지할 수 있는 재생 컨트롤을 제공해야 합니다.
Kotlin
val pi: PendingIntent = Intent(context, MyActivity::class.java).let { intent -> PendingIntent.getActivity( context, 99 /*request code*/, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) } session.setSessionActivity(pi)
자바
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와 통합되고 PIP를 준수하지 않는 한 동영상 재생 또는 게임 사운드는 항상 일시중지되어야 합니다.