TV 앱 시작하기

TV 앱은 스마트폰 및 태블릿 앱과 동일한 구조를 사용합니다. 이러한 유사성이 있으므로 기존 앱을 수정하여 TV 기기에서도 실행되게 하거나 Android 앱 빌드에 관해 이미 알고 있는 지식을 바탕으로 새로운 앱을 만들 수 있습니다.

중요: 앱이 Google Play에서 Android TV 앱으로 승인받으려면 특정 요구사항을 준수해야 합니다. 자세한 정보는 TV 앱 품질에 나열된 요구사항을 참조하세요.

이 과정에서는 TV 앱을 빌드하기 위한 개발 환경을 준비하는 방법과 앱이 TV 기기에서 실행될 수 있게 하는 데 필요한 최소 변경 사항을 설명합니다.

TV 디자인TV 레이아웃 빌드도 참조해야 합니다. Android TV Leanback 지원 라이브러리 샘플도 사용해보세요.

미디어 형식 지원 결정

Android TV가 지원하는 코덱, 프로토콜, 형식에 관한 정보는 다음 문서를 참조하세요.

TV 프로젝트 설정

이 섹션에서는 TV 기기에서 실행되도록 기존 Android 앱을 수정하거나 새로운 앱을 만드는 방법을 설명합니다. 기존 Android 앱이 있는 경우 Android TV 지원을 추가하면 기존 앱 아키텍처를 다시 사용하면서 TV용 사용자 인터페이스를 디자인할 수 있습니다.

다음은 TV 기기에서 실행되는 앱을 만드는 데 사용해야 하는 주요 구성요소입니다.

  • TV 활동(필수) - 애플리케이션 manifest에 TV 기기에서 실행할 활동을 선언합니다.
  • TV 지원 라이브러리(선택사항) - 사용자 인터페이스 빌드를 위한 위젯을 제공하고 TV 기기에서 사용할 수 있는 여러 지원 라이브러리가 있습니다.

기본 요건

TV용 앱을 빌드하기 전에 다음 작업을 해야 합니다.

TV 활동 선언

TV 기기에서 실행되도록 개발하는 애플리케이션은 해당 manifest에서 TV 런처 활동을 선언해야 합니다. 이를 위해 CATEGORY_LEANBACK_LAUNCHER 인텐트 필터를 사용합니다. 이 필터는 앱이 TV용으로 사용 설정되었음을 나타내며 Google Play에서 TV 앱으로 식별될 수 있도록 허용합니다. 사용자가 TV 홈 화면에서 앱을 선택하면 이 인텐트가 실행할 활동을 나타냅니다.

다음 코드 스니펫은 manifest에서 인텐트 필터를 포함하는 방법을 보여줍니다.

    <application
      android:banner="@drawable/banner" >
      ...
      <activity
        android:name="com.example.android.MainActivity"
        android:label="@string/app_name" >

        <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>

      <activity
        android:name="com.example.android.TvActivity"
        android:label="@string/app_name"
        android:theme="@style/Theme.Leanback">

        <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
        </intent-filter>

      </activity>
    </application>
    

이 예의 두 번째 활동 manifest 항목은 해당 활동을 TV 기기에서 실행할 활동으로 지정합니다.

주의: 앱에 CATEGORY_LEANBACK_LAUNCHER 인텐트 필터를 포함하지 않으면 TV 기기에서 Google Play를 실행하는 사용자에게 앱이 표시되지 않습니다. 또한, 개발자 도구를 사용해 TV 기기에 앱을 로드했을 때 이 필터가 앱에 없으면 앱이 TV 사용자 인터페이스에 표시되지 않습니다.

TV에서 사용하도록 기존 앱을 수정할 경우 앱이 스마트폰 및 태블릿에서 사용하는 것과 동일한 활동 레이아웃을 TV에서도 사용해서는 안 됩니다. TV 앱의 사용자 인터페이스(또는 기존 앱의 TV 부분)는 소파에서 리모컨을 사용해 쉽게 탐색할 수 있는 더욱 단순한 인터페이스를 제공해야 합니다. TV 앱 디자인에 관한 가이드라인은 TV 디자인 가이드를 참조하세요. TV 인터페이스 레이아웃의 최소 구현 요구사항에 관한 자세한 정보는 TV 레이아웃 빌드를 참조하세요.

Leanback 지원 선언

앱이 Android TV에 필요한 Leanback 사용자 인터페이스를 사용한다고 선언합니다. Android TV는 물론 휴대기기(스마트폰, 웨어러블, 태블릿 등)에서도 실행되는 앱을 개발하는 경우 required 속성 값을 false로 설정합니다. required 속성 값을 true로 설정하면 앱이 Leanback UI를 사용하는 기기에서만 실행됩니다.

    <manifest>
        <uses-feature android:name="android.software.leanback"
            android:required="false" />
        ...
    </manifest>
    

터치스크린이 필수가 아니라고 선언

TV 기기에서 실행될 애플리케이션은 터치스크린으로 입력을 받지 않습니다. 이를 명확히 하기 위해 TV 앱의 manifest는 android.hardware.touchscreen 기능이 필요하지 않다고 선언해야 합니다. 이 설정은 앱을 TV 기기에서 작동하는 것으로 식별하고 Google Play에서 TV 앱으로 인식되도록 하는 데 필요합니다. 다음 코드 예시는 이 manifest 선언을 포함하는 방법을 보여줍니다.

    <manifest>
        <uses-feature android:name="android.hardware.touchscreen"
                  android:required="false" />
        ...
    </manifest>
    

주의: 이 코드 예에 표시된 것처럼 앱 manifest에서 터치스크린이 필요하지 않다고 선언해야 합니다. 그러지 않으면 앱이 TV 기기의 Google Play에 표시되지 않습니다.

애플리케이션에 Leanback 런처 인텐트 필터가 포함되어 있으면 각 현지화에 관해 홈 화면 배너 이미지를 제공해야 합니다. 배너는 앱과 게임 행의 홈 화면에 나타나는 앱 실행 지점입니다. 앱에 배너를 추가하려면 다음과 같이 manifest에 배너를 설명하세요.

    <application
        ...
        android:banner="@drawable/banner" >

        ...
    </application>
    

<application> 태그가 포함된 android:banner 속성을 사용하여 모든 애플리케이션 활동에 기본 배너를 제공합니다. <activity> 태그가 포함된 경우에는 특정 활동에 관한 배너를 제공합니다.

배너는 크기가 320 x 180픽셀인 xhdpi 리소스여야 합니다. 텍스트는 이미지에 포함되어 있어야 합니다. 앱이 두 개 이상의 언어로 제공되는 경우 별도 버전의 배너를 지원되는 각 언어의 텍스트로 제공해야 합니다.

런처 색상 변경

TV 앱이 실행되면 확장하는 채워진 원 모양의 애니메이션이 표시됩니다. 이 애니메이션의 색상을 맞춤설정하려면 TV 앱 또는 활동의 android:colorPrimary 속성을 특정 색상으로 설정합니다. 다음 스니펫에 나와 있는 것처럼 테마 리소스 XML 파일에서 두 개의 추가 전환 중복 속성도 true로 설정해야 합니다.

    <resources>
        <style ... >
          <item name="android:colorPrimary">@color/primary</item>
          <item name="android:windowAllowReturnTransitionOverlap">true</item>
          <item name="android:windowAllowEnterTransitionOverlap">true</item>
        </style>
    </resources>
    

테마 및 스타일 사용에 관한 자세한 정보는 스타일 및 테마를 참조하세요.

TV 지원 라이브러리 추가

Android SDK에는 TV 앱에서 사용하기 위한 지원 라이브러리가 포함되어 있습니다. 이러한 라이브러리는 TV 기기에 사용할 API와 사용자 인터페이스 위젯을 제공합니다. 라이브러리는 <sdk>/extras/android/support/ 디렉터리에 있으며 종류는 다음과 같습니다.

  • v17 Leanback 라이브러리 - TV 앱, 특히 미디어를 재생하는 앱에 사용자 인터페이스 위젯을 제공합니다.
  • v7 recyclerview 라이브러리 - 메모리 효율적인 방식으로 긴 목록의 표시를 관리하는 클래스를 제공합니다. v17 Leanback 라이브러리의 여러 클래스가 이 라이브러리의 클래스에 종속되어 있습니다.
  • v7 CardView 라이브러리 - 미디어 항목 사진 및 설명과 같은 정보 카드를 표시하는 사용자 인터페이스 위젯을 제공합니다.

참고: 이러한 지원 라이브러리를 TV 앱에 반드시 사용할 필요는 없습니다. 하지만 이러한 지원 라이브러리를 사용하는 것이 좋으며, 특히 미디어 카탈로그 탐색 인터페이스를 제공하는 앱의 경우 지원 라이브러리 사용을 적극 권장합니다.

앱에서 v17 Leanback 라이브러리를 사용하기로 결정했다면 이 라이브러리가 v4 지원 라이브러리에 종속된다는 점에 유의해야 합니다. 따라서 Leanback 지원 라이브러리를 사용하는 앱에 다음 지원 라이브러리가 포함되어 있어야 합니다.

  • v4 지원 라이브러리
  • v7 RecyclerView 지원 라이브러리
  • v17 Leanback 지원 라이브러리

v17 Leanback 라이브러리에는 앱 프로젝트에 라이브러리를 포함하는 특정 단계에 필요한 리소스가 포함되어 있습니다. 리소스가 포함된 지원 라이브러리를 가져오는 방법에 관한 지침은 지원 라이브러리 설정을 참조하세요.

TV 앱 빌드

위에서 설명한 단계를 완료했으면 큰 화면용 앱 빌드를 시작해볼 때가 되었습니다! 다음 추가 주제를 살펴보면 TV용 앱 빌드에 도움이 될 것입니다.

  • TV 재생 앱 빌드 - TV는 엔터테인먼트를 제공하기 위해 만들어졌습니다. 그러므로 Android는 동영상과 음악을 재생하는 TV 앱을 빌드하는 데 필요한 일련의 사용자 인터페이스 도구와 위젯을 제공하고 사용자가 원하는 콘텐츠를 탐색할 수 있도록 합니다.
  • 사용자가 TV에서 콘텐츠를 찾도록 돕기 - 앱에는 사용자가 바로 이용할 수 있는 모든 콘텐츠가 있으므로 사용자가 즐기는 콘텐츠를 찾도록 도와주는 작업은 콘텐츠를 제공하는 것만큼이나 중요합니다. 이 과정에서는 콘텐츠를 TV 기기에 표시하는 방법을 설명합니다.
  • TV 게임 빌드 - TV 기기는 게임하기에 좋은 플랫폼입니다. TV에서 우수한 게임 환경을 빌드하는 방법에 관한 정보는 이 주제를 참조하세요.
  • TV 채널 빌드 - 동영상 콘텐츠를 선형 '지상파 TV' 스타일로 보여줄 수 있습니다. 여기에는 사용자가 프로그램 가이드 및 채널 위/아래 버튼을 이용해 액세스할 수 있는 채널과 프로그램도 포함되어 있습니다.

TV 앱 실행

앱 실행은 개발 과정에서 중요한 부분입니다. USB 디버깅을 지원하도록 구성된 TV 기기에서 앱을 실행하거나 가상 TV 기기를 사용할 수 있습니다.

실제 기기에서 실행

다음 단계에 따라 TV 기기를 설정합니다.

  1. USB 케이블을 사용하여 TV 기기를 개발 시스템에 연결합니다. 필요한 경우 기기 제조업체에서 제공한 설명서를 참조하세요.
  2. TV 기기에서 설정으로 이동합니다.
  3. 기기 행에서 정보를 선택합니다.
  4. 아래의 빌드로 스크롤하여 빌드를 선택합니다. '개발자가 되셨습니다.' 메시지가 표시될 때까지 여러 번 선택합니다.
  5. 설정으로 돌아갑니다. 환경설정 행에서 개발자 옵션을 선택합니다.
  6. 디버깅 > USB 디버깅을 선택하고 설정을 선택합니다.
  7. TV 홈 화면으로 돌아갑니다.

TV 기기에서 애플리케이션을 테스트하려면 다음과 같이 합니다.

  1. Android 스튜디오에서 프로젝트를 선택하고 툴바에서 실행 을 클릭합니다.
  2. 배포 대상 선택 창에서 TV 기기를 선택하고 확인을 클릭합니다.

가상 기기에서 실행

Android SDK의 AVD Manager는 애플리케이션 실행과 테스트를 위한 가상 TV 기기를 만들 수 있는 기기 정의를 제공합니다.

가상 TV 기기를 만들려면 다음과 같이 합니다.

  1. AVD Manager를 시작합니다. 자세한 정보는 AVD Manager 도움말을 참조하세요.
  2. AVD Manager 대화상자에서 기기 정의 탭을 클릭합니다.
  3. Android TV 기기 정의 중 하나를 선택하고 AVD 만들기를 클릭합니다.
  4. 에뮬레이터 옵션을 선택하고 OK를 클릭하여 AVD를 만듭니다.

    참고: TV 에뮬레이터 기기가 최고의 성능을 발휘하게 하려면 x86 에뮬레이터를 사용하고 호스트 GPU 사용 옵션을 사용 설정합니다. 또한, 사용할 수 있는 경우 가상 기기 가속을 사용합니다. 에뮬레이터의 하드웨어 가속에 관한 자세한 정보는 하드웨어 가속 구성을 참조하세요.

가상 TV 기기에서 애플리케이션을 테스트하려면 다음과 같이 합니다.

  1. Android 스튜디오에서 프로젝트를 선택하고 툴바에서 실행 을 클릭합니다.
  2. 배포 대상 선택 창에서 가상 TV 기기를 선택하고 확인을 클릭합니다.

에뮬레이터 사용에 관한 자세한 정보는 에뮬레이터 사용을 참조하세요. Android 스튜디오에서 가상 기기로 앱을 배포하는 방법에 관한 자세한 정보는 Android 스튜디오로 디버깅을 참조하세요.