미디어 앱을 Android TV로 확장

Android는 고화질 TV와 같은 대형 화면 기기에서 실행되는 앱에 최적화된 다양한 기능을 갖춘 사용자 환경을 제공합니다. Android TV용으로 앱을 개발하여 앱의 사용자층을 확장할 수 있습니다. 이 문서에서는 이를 효과적으로 수행하는 방법을 안내합니다.

TV 앱 빌드

TV 앱은 스마트폰 및 태블릿 앱과 동일한 구조를 사용합니다. 이 접근 방식을 사용하면 Android용 앱 빌드에 관해 이미 알고 있는 내용을 바탕으로 새로운 TV 앱을 만들거나 기존 앱을 확장하여 TV 기기에서도 실행할 수 있습니다.

하지만 TV용 사용자 상호작용 모델은 스마트폰 및 태블릿 기기와는 상당히 다릅니다. TV 기기에서 성공적인 앱을 만들려면 3m 떨어진 곳에서도 명확하게 이해할 수 있는 새로운 레이아웃을 디자인하고 방향 패드와 선택 버튼만으로 작동하는 탐색을 제공해야 합니다.

TV 하드웨어 컨트롤러를 처리하는 방법, TV 레이아웃 빌드, TV 탐색 만들기와 같은 고려사항에 관한 자세한 내용은 TV 앱 빌드를 참고하세요.

Media3 ExoPlayer 사용

Jetpack Media3는 트랙 정보를 재생, 일시중지, 탐색, 표시하는 기능과 같은 기본 기능을 정의하는 플레이어 인터페이스를 제공합니다. ExoPlayer는 Media3에서 이 인터페이스의 기본 구현입니다.

Android의 MediaPlayer API에 비해 여러 스트리밍 프로토콜, 기본 오디오 및 동영상 렌더러, 미디어 버퍼링을 처리하는 구성요소 지원과 같은 편의 기능이 추가되었습니다.

ExoPlayer를 맞춤설정하고 확장할 수 있으며 Play 스토어 애플리케이션 업데이트를 통해 업데이트할 수 있습니다. 자세한 내용은 Media3 ExoPlayer를 참고하세요.

Media3 MediaSession 사용

미디어 세션은 시스템이 앱의 오디오 또는 동영상 플레이어와 상호작용할 수 있는 보편적인 방법을 제공합니다. Media3를 이전 미디어 API와 구별하는 주요 특징 중 하나는 더 이상 구성요소 간에 커넥터가 필요하지 않다는 것입니다.

MediaSession 클래스는 Player 인터페이스를 구현하는 모든 클래스를 사용합니다. ExoPlayer와 MediaController는 모두 이러한 인터페이스를 구현하는 클래스입니다. 이렇게 하면 구성요소 간의 상호작용이 훨씬 간단해집니다. 자세한 내용은 플레이어 인터페이스를 참고하세요.

미디어 재생 앱을 만드는 방법에 관한 자세한 내용은 ExoPlayer를 사용하여 기본 미디어 플레이어 만들기를 참고하세요.

미디어 앱의 최종 사용자를 위한 최상의 환경을 만들려면 MediaSession를 구현해야 합니다. 이렇게 하려면 다음과 같이 Player를 초기화하고 MediaSession.Builder에 제공합니다.

Kotlin

val player = ExoPlayer.Builder(context).build()
val mediaSession = MediaSession.Builder(context, player).build()

자바

ExoPlayer player = new ExoPlayer.Builder(context).build();
MediaSession mediaSession = new MediaSession.Builder(context, player).build();

자동 상태 처리

Media3 라이브러리는 플레이어의 상태를 사용하여 미디어 세션을 자동으로 업데이트합니다. 따라서 플레이어에서 세션으로의 매핑을 수동으로 처리할 필요가 없습니다. 이렇게 하면 사용자가 Now Playing 카드를 비롯하여 재생 중인 미디어에 관한 최신 정보를 항상 확인할 수 있습니다.

재생 제어 및 광고

Media3에서 기본 플레이어는 Player 인터페이스를 구현하는 ExoPlayer 클래스입니다. 미디어 세션을 플레이어에 연결하면 앱이 미디어 재생을 외부에 광고하고 외부 소스에서 재생 명령어를 수신할 수 있습니다. 미디어 세션은 이러한 명령어를 미디어 앱의 플레이어에 위임합니다.

미디어 세션은 재생을 제어하는 데 중요한 역할을 합니다. 이를 통해 외부 소스에서 미디어 재생 작업을 실행하는 플레이어로 명령어를 라우팅할 수 있습니다. 외부 클라이언트는 미디어 컨트롤러를 사용하여 미디어 앱에 재생 명령어를 실행할 수 있습니다. 이러한 명령어는 미디어 세션에서 수신하며, 미디어 세션은 궁극적으로 명령어를 미디어 플레이어에 위임합니다.

재생 명령어 동작을 맞춤설정하는 방법과 같은 재생에 관한 자세한 내용은 MediaSession을 사용하여 재생 제어 및 광고를 참고하세요.

앱 중단 방지

MediaSession를 사용하면 다음과 같은 불필요한 중단을 방지할 수 있습니다.

  • TV를 끄거나 TV 입력을 전환할 때 예기치 않게 계속 재생됨 또한 TV 하드웨어의 전력 소비가 증가합니다. MediaSession를 사용하면 앱이 플랫폼에 미디어를 재생 중이라고 알릴 수 있고 플랫폼은 앱에 재생이 중지될 수 있다고 알릴 수 있습니다.

  • 앱을 전환하거나 TV 디스플레이를 끄면 음악 재생이 예기치 않게 중지됩니다. MediaSession API를 사용하면 백그라운드 서비스에서 계속 재생할 수 있습니다.

  • 사용자가 재생을 제어하지 못하도록 하는 콘텐츠와의 상호작용 제한 예를 들어 백그라운드에서 음악을 재생하거나 음성 명령을 지원하는 경우 앱으로 돌아갑니다. 앱에서 MediaSession를 사용하면 사용자가 음성 명령을 사용하여 노래나 에피소드를 찾거나 건너뛸 수 있습니다.

추가 고려사항

미디어 앱을 TV용 Android로 확장할 때는 접근성 문제, 참여 유도 방법, 사용자가 콘텐츠를 찾을 수 있는 방법, 게임 및 TV 입력 서비스를 빌드하는 방법을 고려해야 합니다.

TV 접근성

보조 기술은 저시력 사용자에게 도움이 될 수 있고 도움이 되기는 하지만, TV 앱의 콘텐츠 검색 여정에서 접근성을 지원하는 것이 중요합니다.

예를 들어 탐색 안내를 제공하고 요소에 올바르게 라벨을 지정하는 데 각별히 주의하고 TV 앱이 TalkBack과 같은 접근성 기능과 잘 작동하도록 하세요. 이러한 단계를 통해 시각 장애가 있는 사용자의 환경을 크게 개선할 수 있습니다.

접근성을 개선하기 위한 첫 번째 단계는 인식입니다. 텍스트 크기 조정, 키보드 레이아웃, 오디오 설명에 관한 자세한 내용은 접근성 리소스를 참고하세요.

Google TV에서 사용자 참여를 유도하기 위한 권장사항

Android TV용으로 제작된 모든 앱은 Google TV를 실행하는 기기에서 작동합니다. Google TV에서 최고의 사용자 환경을 제공하려면 다음 권장사항을 적용하는 것이 좋습니다.

오디오 또는 동영상 플레이어와 상호작용하는 범용적인 방법을 제공하려면 MediaSession를 사용해야 합니다. 이를 구현하는 방법에 관한 자세한 내용은 Media3 MediaSession 사용을 참고하세요.

기본적으로 앱은 Google Cast를 지원해야 합니다. 이를 통해 Android, iOS, Chrome 앱을 확장하여 Android TV, Chromecast 기기, 어시스턴트 기기뿐만 아니라 오디오 및 동영상 스트리밍을 지원할 수 있습니다. 자세한 내용은 Google Cast 문서를 참고하세요.

또한 사용자에게 다음과 같은 도움을 줄 수 있습니다.

  • 미디어 작업 피드를 제공하거나 다음 볼만한 동영상을 통합하여 여러 플랫폼에서 콘텐츠를 탐색하세요.

  • 계정 연결 및 사용 권한 동기화를 지원하고, 음성 전송을 제공하며, Cast Connect를 사용 설정하여 음성 및 참여를 활용하세요.

  • Google Play 결제를 통합하고 원활한 정기 결제를 제공하여 더 쉽게 결제하세요.

TV 입력 프레임워크 빌드

라이브 TV 프로그램 및 기타 연속적인 채널 기반 콘텐츠를 시청하는 것은 TV 환경에서 큰 부분을 차지합니다. 사용자는 채널을 둘러보면서 TV 프로그램을 선택하고 시청하는 데 익숙합니다. TV 입력 프레임워크는 TV 프로그램 가이드에 동영상 또는 음악 콘텐츠를 게시하는 데 필요한 채널을 만듭니다.

TV 입력 프레임워크는 HDMI 포트 및 내장 튜너와 같은 하드웨어 소스와 인터넷을 통해 스트리밍되는 동영상과 같은 소프트웨어 소스에서 라이브 동영상 콘텐츠를 수신하고 재생하는 통합된 방법을 제공합니다. 자세한 내용은 TV 입력 서비스 빌드를 참고하세요.