참조용 TV 앱 맞춤설정

실시간 TV는 Android 텔레비전 기기를 위한 참조용 TV 앱입니다. 하지만, 기기 제조업체에서 실시간 TV의 기본 구현에 포함되지 않는 사진 조정, 게임 모드 또는 3D 모드 등의 제품별 기능을 더 추가하는 것이 좋습니다. 이러한 기기 관련 기능이나 옵션을 지원하기 위해 실시간 TV는 다음과 같은 맞춤설정을 지원합니다.

  • 사용자가 일시중지, 빨리 감기, 되감기를 사용할 수 있게 해주는 타임 시프팅을 사용 설정합니다. 타임 시프팅 모드를 구성하면 내부 저장소 대신 외부 저장소를 사용할 수 있습니다.
  • TV 옵션 행에 옵션을 추가합니다.
  • 맞춤 행을 추가하고 여기에 옵션을 추가합니다.

참고: 실시간 채널은 Google 서비스로 기기에 있는 것처럼 사용할 수 있는 Google의 실시간 TV 구현입니다. 실시간 채널을 맞춤설정하려면 안내에서 com.android.tv.*com.google.android.tv.*로 대체하세요.

라이브 TV 맞춤설정

라이브 TV를 맞춤설정하려면 타겟 Android TV 기기에 맞춤설정 패키지가 설치되어 있어야 하며, 이 패키지는 com.android.tv.permission.CUSTOMIZE_TV_APP 권한이 있는 사전 빌드된 시스템 앱이어야 합니다.

실시간 TV는 이 권한을 가진 시스템 패키지를 검색하고 리소스 파일을 확인한 다음, 구체적인 카테고리가 표시된 패키지의 활동을 감지하여 맞춤설정을 처리합니다.

요점: 한 개의 패키지만 라이브 TV를 맞춤설정할 수 있습니다.

타임 시프팅 모드 구성

타임 시프팅(trickplay)을 사용하면 Android 텔레비전 기기에서 채널 재생을 일시중지하거나 되감기, 빨리 감기할 수 있습니다. 실시간 TV 구현에서는 Play 컨트롤 UI를 통해 타임 시프팅을 사용할 수 있습니다. 타임 시프팅은 실시간 TV에서 기본적으로 사용 설정되지만, 사용 중지해도 됩니다. 타임 시프팅은 외부 저장소만 사용하도록 구성할 수도 있습니다.

타임 시프팅을 구성하려면 문자열 리소스 trickplay_mode를 추가하고 리소스 값을 다음 옵션 중 하나로 설정합니다.

  • enabled: 타임 시프팅을 사용 설정합니다. 옵션을 지정하지 않으면 기본값으로 설정됩니다.
  • disabled: 타임 시프팅을 사용 중지합니다.
  • use_external_storage_only: 타임 시프팅을 구성하여 외부 저장소를 사용합니다.
<string name="trickplay_mode">use_external_storage_only</string>
D패드의 중앙 버튼을 누른 후 재생 컨트롤 UI가 활성화됨

그림 1. D패드의 중앙 버튼을 누른 후 재생 컨트롤 UI가 활성화됨

TV 옵션 맞춤설정

기기 제조업체는 라이브 TV 설정의 맞춤 옵션(예: 사운드 픽처 설정에 단축키 추가)을 기존 TV 옵션 메뉴에 추가할 수 있습니다.

맞춤 옵션을 표시하려면 활동에서 com.android.tv.category.OPTIONS_ROW 카테고리를 필터링하는 인텐트 필터를 선언합니다. 맞춤 기능은 활동의 기기 제조업체에서 구현합니다. 활동은 옵션을 클릭하면 실행됩니다. 활동의 제목과 아이콘은 옵션에 사용됩니다. 맞춤설정된 TV 옵션은 최상의 사용자 환경을 제공할 수 있도록 기존 UI와 일치해야 합니다.

참고: 활동은 하나의 옵션만 처리할 수 있습니다. 이는 실시간 TV가 Android의 한계로 인해 카테고리가 같은 활동의 인텐트 필터를 구별할 수 없기 때문입니다. 해결 방법은 활동의 여러 옵션 처리를 참고하세요.

기기 제조업체에서 AndroidManifest.xmlandroid:priority를 정의하여 기존 옵션 전과 후에 맞춤 옵션을 삽입할 수도 있습니다. 100 미만의 우선순위 값이 정의된 옵션이 기존 항목보다 먼저 표시되고 100보다 높은 값이 나중에 표시됩니다. 여러 맞춤 옵션(기존 옵션 전 또는 후)은 우선순위를 기준으로 오름차순 정렬됩니다. 옵션의 우선순위가 같은 경우 옵션 사이의 순서는 정의되지 않습니다.

이 예에서는 옵션이 TV 옵션 행에 먼저 표시되며, 옵션이 클릭되면 PictureSettingsActivity가 실행됩니다.

<activity android:name=".PictureSettingsActivity"
    android:label="@string/activity_label_picture_settings"
          android:theme="@style/Theme.Panel">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_brightness"
        android:label="@string/option_label_brightness"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity>

맞춤설정된 TV 옵션 행의 예

그림 2. 맞춤설정된 TV 옵션 행의 예(밝기 및 에너지 절약).

맞춤 TV 옵션의 예

그림 3. 맞춤 TV 옵션의 예

활동에서 여러 옵션 처리

옵션이 활동의 인텐트 필터에 매핑되거나 인텐트 필터가 옵션에 매핑됩니다. Android는 카테고리와 작업이 같은 인텐트 필터를 구별하지 않으므로 활동은 여러 인텐트 필터가 선언된 경우에도 한 개의 옵션만 처리합니다. 활동의 여러 옵션을 처리하려면 AndroidManifest.xml<activity-alias>를 사용하세요. 활동에서 getIntent().getComponent()를 사용하여 클릭된 옵션을 식별합니다.

<activity-alias android:name=".AnyUniqueName"
    android:targetActivity=".PictureSettingsActivity">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_energy_saving"
        android:label="@string/option_label_energy_saving"
        android:priority="1">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity-alias>

맞춤 행 만들기

기기 제조업체는 TV 옵션 행 위에 행을 추가한 후 맞춤설정할 수 있습니다. 이러한 맞춤 행은 선택사항입니다.

행 제목

res/values/strings.xmlpartner_row_title 문자열을 정의합니다. 문자열 값은 맞춤 행 제목에 사용됩니다.

<string name="partner_row_title">Partner Row</string>

맞춤 옵션

맞춤 옵션을 맞춤 행에 추가하려면 TV 옵션 메뉴에 옵션을 추가하는 절차를 따르되, 대신 카테고리 이름을 com.android.tv.category.PARTNER_ROW로 변경합니다.

<activity android:name=".ThreeDimensionalSettingDialogActivity"
    android:label="@string/activity_label_3d"
    android:theme="@android:style/Theme.Material.Light.Dialog">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_3d"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.PARTNER_ROW" />
    </intent-filter>
</activity>

선택적 맞춤 행의 예

그림 4. 선택적 맞춤 행의 예

맞춤 옵션 대화상자의 예

그림 5. 맞춤 옵션 대화상자의 예