실시간 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>
TV 옵션 맞춤설정
기기 제조업체는 라이브 TV 설정의 맞춤 옵션(예: 사운드 픽처 설정에 단축키 추가)을 기존 TV 옵션 메뉴에 추가할 수 있습니다.
맞춤 옵션을 표시하려면 활동에서 com.android.tv.category.OPTIONS_ROW
카테고리를 필터링하는 인텐트 필터를 선언합니다. 맞춤 기능은 활동의 기기 제조업체에서 구현합니다. 활동은 옵션을 클릭하면 실행됩니다. 활동의 제목과 아이콘은 옵션에 사용됩니다. 맞춤설정된 TV 옵션은 최상의 사용자 환경을 제공할 수 있도록 기존 UI와 일치해야 합니다.
참고: 활동은 하나의 옵션만 처리할 수 있습니다. 이는 실시간 TV가 Android의 한계로 인해 카테고리가 같은 활동의 인텐트 필터를 구별할 수 없기 때문입니다. 해결 방법은 활동의 여러 옵션 처리를 참고하세요.
기기 제조업체에서 AndroidManifest.xml
에 android: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>
활동에서 여러 옵션 처리
옵션이 활동의 인텐트 필터에 매핑되거나 인텐트 필터가 옵션에 매핑됩니다. 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.xml
에 partner_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>