TV 입력 프레임워크

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
Android TV HAL 아이콘

Android TV 입력 프레임워크(TIF)는 Android TV로의 라이브 콘텐츠 전달을 간소화합니다. Android TIF는 제조업체가 Android TV를 제어하기 위한 입력 모듈을 생성할 수 있는 표준 API를 제공하고 TV 입력에서 게시한 메타데이터를 통해 실시간 TV 검색 및 추천을 가능하게 합니다.

이 프레임워크는 TV 표준이나 지역 요구 사항을 구현하려고 하지 않지만 장치 제조업체가 다시 구현하지 않고도 지역 디지털 TV 방송 표준을 더 쉽게 충족할 수 있도록 합니다. 이 섹션의 문서는 맞춤형 TV 입력을 생성하려는 타사 앱 개발자에게도 유용할 수 있습니다.

구성품

Android TV 입력 프레임워크 구현에는 TV 입력 관리자가 포함됩니다. TIF는 타사 앱으로 대체할 수 없는 시스템 앱인 TV 앱과 함께 작동하여 내장 및 IP 튜너 채널에 액세스합니다. TV 앱은 TV 입력 관리자를 통해 장치 제조업체 또는 타사에서 제공하는 TV 입력 모듈과 통신합니다.

TV 입력 프레임워크는 다음으로 구성됩니다.

  • TV 공급자( com.android.providers.tv.TvProvider ): 채널, 프로그램 및 관련 권한의 데이터베이스
  • TV 앱( com.android.tv.TvActivity ): 사용자 상호작용을 처리하는 앱
  • TV 입력 관리자( android.media.tv.TvInputManager ): TV 입력이 TV 앱과 통신할 수 있도록 합니다.
  • TV 입력: 물리적 또는 가상 튜너 및 입력 포트를 나타내는 앱
  • TV 입력 HAL( tv_input 모듈): 구현 시 시스템 TV 입력이 TV 전용 하드웨어에 액세스할 수 있도록 하는 하드웨어 정의
  • 자녀 보호: 채널 및 프로그램 차단을 허용하는 기술
  • HDMI-CEC: HDMI를 통해 다양한 기기를 원격 제어할 수 있는 기술
  • 튜너 프레임워크: 내장형 튜너 TV 입력용 프레임워크
  • MediaCas: 조건부 액세스를 위한 프레임워크
  • Tuner Resource Manager: TV 입력, MediaCas, 내장 튜너 입력을 위한 하드웨어 자원을 관리하는 서비스

이러한 구성 요소는 아래에서 자세히 다룹니다. Android TV 입력 프레임워크 아키텍처에 대한 자세한 내용은 다음 다이어그램을 참조하세요.

Android TIF 아키텍처 개요
그림 1. Android TV 입력 프레임워크(TIF) 아키텍처

흐름

아키텍처가 실행되는 방법은 다음과 같습니다.

  1. 사용자는 타사 앱으로 대체할 수 없는 시스템 앱인 TV 앱을 보고 상호 작용합니다.
  2. TV 앱은 TV 입력의 AV 콘텐츠를 표시합니다.
  3. TV 앱은 TV 입력과 직접 대화할 수 없습니다. TV 입력 관리자는 TV 앱의 TV 입력 상태를 식별합니다. 이러한 제한 사항에 대한 자세한 내용은 아래의 TV 입력 관리자 를 참조하세요.

권한

  • signatureOrSystem TV 입력 및 TV 앱만 TV 공급자 데이터베이스에 대한 전체 액세스 권한을 가지며 KeyEvents를 수신할 수 있습니다.
  • 시스템 TV 입력만 TV 입력 관리자 서비스를 통해 TV 입력 HAL에 액세스할 수 있습니다. TV 입력은 TV 입력 관리자 세션을 통해 일대일로 액세스됩니다.
  • 타사 TV 입력은 TV 제공업체 데이터베이스에 대한 패키지 잠금 액세스 권한을 가지며 일치하는 패키지 행에 대해서만 읽기/쓰기가 가능합니다.
  • 타사 TV 입력은 자체 콘텐츠 또는 HDMI1과 같은 장치 제조업체의 패스스루 TV 입력 콘텐츠를 표시할 수 있습니다. 내장 또는 IPTV 튜너와 같은 비 패스스루 TV 입력의 콘텐츠를 표시할 수 없습니다.
  • 하드웨어 TV 입력 앱에 대한 TV_INPUT_HARDWARE 권한은 TV 입력 관리자 서비스에 신호를 보내 부팅 시 TV 입력 서비스에 알리고 TV 입력 관리자 서비스를 호출하고 해당 TV 입력을 추가하도록 합니다. 이 권한을 통해 하드웨어 TV 입력 앱은 TV 입력 서비스당 여러 TV 입력을 지원할 수 있을 뿐만 아니라 지원되는 TV 입력을 동적으로 추가 및 제거할 수 있습니다.

TV 제공업체

TV 공급자 데이터베이스는 TV 입력의 채널과 프로그램을 저장합니다. 또한 TV 제공업체는 TV 입력이 자신의 기록만 볼 수 있도록 관련 권한을 게시하고 관리합니다. 예를 들어, 특정 TV 입력은 자신이 제공한 채널과 프로그램만 볼 수 있으며 다른 TV 입력의 채널 및 프로그램에 대한 액세스는 금지됩니다.

TV 공급자는 내부적으로 "방송 장르"를 "표준 장르"로 매핑합니다. TV 입력은 "방송 장르"를 기본 방송 표준의 값으로 채우는 역할을 하며 "표준 장르" 필드는 android.provider.TvContract.Genres 의 올바른 관련 장르로 자동으로 채워집니다. 예를 들어 방송 표준 ATSC A/65 및 장르가 0x25인 프로그램("스포츠" 의미)의 경우 TV 입력은 "스포츠" 문자열로 "방송 장르"를 채우고 TV 공급자는 "표준 장르" 필드를 다음으로 채웁니다. 매핑된 값 android.provider.TvContract.Genres.SPORTS .

TV 제공업체에 대한 자세한 내용은 아래 다이어그램을 참조하세요.

안드로이드 TV 제공업체
그림 2. Android TV 제공업체

권한 있는 시스템 파티션의 앱만 전체 TV 공급자 데이터베이스를 읽을 수 있습니다.

패스스루 TV 입력은 채널과 프로그램을 저장하지 않습니다.

채널 및 프로그램에 대한 표준 필드 외에도 TV 공급자 데이터베이스는 TV 입력이 임의의 데이터를 저장하는 데 사용할 수 있는 각 테이블에서 BLOB 유형 필드 COLUMN_INTERNAL_PROVIDER_DATA 도 제공합니다. 해당 BLOB 데이터는 관련 튜너의 주파수와 같은 사용자 지정 정보를 포함할 수 있으며 프로토콜 버퍼 또는 다른 형식으로 제공될 수 있습니다. 검색 가능 필드는 특정 채널을 검색에서 사용할 수 없도록 하는 데 사용할 수 있습니다(예: 콘텐츠 보호에 대한 국가별 요구 사항 충족).

데이터베이스 필드 예

TV 제공업체는 채널( android.provider.TvContract.Channels ) 및 프로그램( android.provider.TvContract.Programs ) 테이블에서 구조화된 데이터를 지원합니다. 이러한 테이블은 TV 입력 및 TV 앱과 같은 시스템 앱에서 채워지고 액세스됩니다. 이러한 테이블에는 네 가지 유형의 필드가 있습니다.

  • 표시: 표시 필드에는 채널 이름( COLUMN_DISPLAY_NAME ) 또는 번호( COLUMN_DISPLAY_NUMBER ) 또는 보고 있는 프로그램 제목과 같이 앱이 사용자에게 표시할 수 있는 정보가 포함됩니다.
  • 메타데이터: 채널의 전송 스트림 ID( COLUMN_TRANSPORT_STREAM_ID ), 원래 네트워크 ID( COLUMN_ORIGINAL_NETWORK_ID ) 및 서비스 ID( COLUMN_SERVICE_ID )와 같이 관련 표준에 따라 콘텐츠를 식별하기 위한 세 가지 필드가 있습니다.
  • 내부 데이터 : TV 입력의 사용자 정의 사용을 위한 필드입니다.
    COLUMN_INTERNAL_PROVIDER_DATA 와 같은 일부 필드는 TV 입력이 채널 또는 프로그램에 대한 임의의 메타데이터를 저장할 수 있는 사용자 지정 가능한 BLOB 필드입니다.
  • 플래그: 플래그 필드는 채널이 검색, 탐색 또는 보기에서 제한되어야 하는지 여부를 나타냅니다. 채널 레벨에서만 설정할 수 있습니다. 모든 프로그램은 채널의 설정을 따릅니다.
    • COLUMN_SEARCHABLE : 특정 지역에서는 일부 채널에서 검색을 제한해야 할 수 있습니다. COLUMN_SEARCHABLE = 0 은 채널이 검색 결과에 노출되지 않아야 함을 의미합니다.
    • COLUMN_BROWSABLE : 시스템 응용 프로그램에만 표시됩니다. 애플리케이션에서 채널을 탐색하지 못하도록 제한합니다. COLUMN_BROWSABLE = 0 은 채널이 채널 목록에 포함되지 않아야 함을 의미합니다.
    • COLUMN_LOCKED : 시스템 응용 프로그램에만 표시됩니다. PIN 코드를 입력하지 않고 잘못된 계정에서 채널을 볼 수 없도록 제한합니다. COLUMN_LOCKED = 1 은 채널이 자녀 보호에 의해 보호되어야 함을 의미합니다.

필드의 전체 목록은 android/frameworks/base/media/java/android/media/tv/TvContract.java 를 참조하세요.

권한 및 액세스 제어

모든 필드는 해당 행에 대한 액세스 권한이 있는 모든 사람이 볼 수 있습니다. 사용자가 직접 액세스할 수 있는 필드는 없습니다. 그들은 TV 앱, 시스템 앱 또는 TV 입력이 표시되는 것만 봅니다.

  • 각 행에는 해당 행을 소유한 패키지(앱)인 PACKAGE_NAME 이 있으며 TvProvider.java를 통해 쿼리, 삽입, 업데이트를 확인했습니다. TV 입력은 자신이 작성한 정보에만 액세스할 수 있으며 다른 TV 입력에서 제공하는 정보는 차단됩니다.
  • 사용 가능한 채널을 결정하기 위해 AndroidManifest.xml(사용자 동의 필요)을 통한 읽기, 쓰기 권한.
  • signatureOrSystem 앱만 ACCESS_ALL_EPG_DATA 권한을 획득하여 전체 데이터베이스에 액세스할 수 있습니다.

TV 입력 관리자

TV 입력 관리자는 전체 Android TV 입력 프레임워크에 중앙 시스템 API를 제공합니다. 앱과 TV 입력 간의 상호 작용을 중재하고 자녀 보호 기능을 제공합니다. TV 입력 관리자 세션은 TV 입력과 일대일로 생성되어야 합니다. TV 입력 관리자는 설치된 TV 입력에 대한 액세스를 허용하므로 앱은 다음을 수행할 수 있습니다.

  • TV 입력 나열 및 상태 확인
  • 세션 생성 및 리스너 관리

세션의 경우 TV 입력은 TvContract.buildChannelUriForPassthroughInput() 을 사용하여 조정할 수 있는 통과 TV 입력을 제외하고 TV 제공자 데이터베이스에 추가한 URI로만 TV 앱에서 조정할 수 있습니다. TV 입력에도 볼륨이 설정되어 있을 수 있습니다. 장치 제조업체(시그니처 앱) 또는 시스템 파티션에 설치된 기타 앱이 제공하고 서명한 TV 입력은 전체 TV 제공업체 데이터베이스에 액세스할 수 있습니다. 이 액세스는 사용 가능한 모든 TV 채널 및 프로그램을 탐색하고 검색하는 앱을 구성하는 데 사용할 수 있습니다.

앱은 android.media.tv.TvInputManagerTvInputCallback 을 생성하고 등록하여 TV 입력의 상태 변경 또는 TV 입력의 추가 또는 제거 시 콜백할 수 있습니다. 예를 들어 TV 앱은 TV 입력이 연결이 끊긴 경우 연결이 끊긴 것으로 표시하고 선택을 방지하여 반응할 수 있습니다.

TV 입력 관리자는 TV 앱과 TV 입력 간의 통신을 추상화합니다. TV 입력 관리자 및 TV 입력의 표준 인터페이스를 사용하면 여러 장치 제조업체가 자체 TV 앱을 만드는 동시에 모든 타사 TV 입력이 모든 TV 앱에서 작동하도록 돕습니다.

TV 입력

TV 입력은 AndroidManifest.xml이 있고 설치된다는 점에서 Android 앱입니다(Play를 통해 사전 설치되거나 사이드로드됨). Android TV는 사전 설치된 시스템 앱, 기기 제조업체에서 서명한 앱 및 타사 TV 입력을 지원합니다.

HDMI 입력 또는 내장 튜너 입력과 같은 일부 입력은 기본 하드웨어와 직접 통신하므로 제조업체에서만 제공할 수 있습니다. IPTV, 장소 이동 및 외부 STB와 같은 기타는 Google Play 스토어에서 제3자가 APK로 제공할 수 있습니다. 다운로드 및 설치가 완료되면 TV 앱 내에서 새 입력을 선택할 수 있습니다.

통과 입력 예

안드로이드 TV 시스템 입력
그림 3. Android TV 시스템 입력

이 예에서 장치 제조업체에서 제공한 TV 입력은 신뢰할 수 있으며 TV 제공업체에 대한 전체 액세스 권한을 가집니다. 통과 TV 입력으로 TV 공급자에 채널이나 프로그램을 등록하지 않습니다. 통과 입력을 참조하는 데 사용되는 URI를 얻으려면 android.media.tv.TvContract 유틸리티 메서드 buildChannelUriForPassthroughInput(String inputId) 을 사용합니다. TV 앱은 TV 입력 관리자와 통신하여 HDMI TV 입력에 연결합니다.

내장 튜너 예

Android TV 내장 튜너 입력
그림 4. Android TV 내장 튜너 입력

이 예에서 장치 제조업체에서 제공하는 내장 튜너 TV 입력은 신뢰할 수 있으며 TV 제공업체에 대한 전체 액세스 권한을 가집니다.

타사 입력 예시

Android TV 타사 입력
그림 5. Android TV 타사 입력

이 예에서 외부 STB TV 입력은 타사에서 제공합니다. 해당 TV 입력은 들어오는 HDMI 비디오 피드에 직접 액세스할 수 없으므로 TV 입력 관리자를 거쳐 장치 제조업체에서 제공하는 HDMI TV 입력을 사용해야 합니다.

TV 입력 관리자를 통해 외부 STB TV 입력은 HDMI TV 입력과 대화하고 HDMI1에 비디오를 표시하도록 요청할 수 있습니다. 따라서 제조업체에서 제공한 HDMI TV 입력이 비디오를 렌더링하는 동안 STB TV 입력은 TV를 제어할 수 있습니다.

PIP(Picture in Picture) 예

Android TV 키 이벤트
그림 6. Android TV KeyEvents

위의 다이어그램은 PIP(Picture in Picture) 디스플레이를 위해 리모콘의 버튼이 특정 TV 입력으로 전달되는 방식을 보여줍니다. 이러한 버튼 누름은 장치 제조업체에서 제공한 하드웨어 드라이버에 의해 해석되어 하드웨어 스캔 코드를 Android 키 코드로 변환하고 이를 표준 Android 입력 파이프라인 InputReaderInputDispatcher 기능에 KeyEvents 로 전달합니다. 초점이 맞춰져 있으면 TV 앱에서 이벤트를 차례로 트리거합니다.

시스템 TV 입력만 InputEvents 를 수신할 수 있으며 RECEIVE_INPUT_EVENT 시스템 권한이 있는 경우에만 가능합니다. TV 입력은 소비할 InputEvents를 결정할 책임이 있으며 TV 앱이 소비할 필요가 없는 키를 처리할 수 있도록 해야 합니다.

TV 앱은 어떤 시스템 TV 입력이 활성 상태인지(사용자가 선택한 의미)를 파악하고 들어오는 KeyEvents 를 명확하게 하고 올바른 TV 입력 관리자 세션으로 라우팅하고 dispatchInputEvent() 를 호출하여 이벤트를 연결된 TV 입력에 전달할 책임이 있습니다. .

MHEG-5 입력 예

다음 다이어그램은 KeyEvents 가 Android TIF를 통해 라우팅되는 방식에 대한 보다 자세한 보기를 보여줍니다.

Android TV 빨간색 버튼 예
그림 7. Android TV Red 버튼 예시

사용자가 텔레비전에서 대화형 앱에 액세스할 수 있도록 하기 위해 유럽에서 일반적으로 사용되는 Red 버튼 앱의 흐름을 보여줍니다. 이 전송 스트림을 통해 앱을 전달할 수 있습니다. 버튼을 클릭하면 사용자가 이러한 방송 앱과 상호 작용할 수 있습니다. 예를 들어 이러한 방송 앱을 사용하여 관련 웹 페이지 또는 스포츠 경기 결과에 액세스할 수 있습니다.

방송 앱이 TV 앱과 어떻게 상호 작용하는지 알아보려면 방송 앱 섹션을 참조하십시오.

이 예에서:

  1. TV 앱이 초점에 있고 모든 키를 수신합니다.
  2. KeyEvents (예: 빨간색 버튼)는 InputEvents.
  3. 시스템 TV 입력은 MHEG-5 스택과 통합되며 RECEIVE_INPUT_EVENT 시스템 권한이 있습니다.
  4. 활성화 키코드(예: 빨간색 버튼)를 수신하면 TV 입력이 방송 앱을 활성화합니다.
  5. TV 입력은 KeyEventsInputEvents 로 사용하고 방송 앱은 포커스가 되어 닫힐 때까지 InputEvents 를 처리합니다.

참고 : 타사 TV 입력은 키를 수신하지 않습니다.

TV 입력 HAL

TV 입력 HAL은 TV 전용 하드웨어에 액세스하기 위한 TV 입력 개발을 지원합니다. 다른 Android HAL과 마찬가지로 TV 입력 HAL( tv_input )은 AOSP 소스 트리에서 사용할 수 있으며 공급업체에서 구현을 개발합니다.

TV 앱

시스템 TV 앱은 사용자에게 라이브 TV 콘텐츠를 제공합니다. Android 플랫폼과 함께 참조 TV 앱(라이브 TV)이 제공되며, 이 앱은 있는 그대로 사용하거나, 사용자 지정하거나, 확장하거나, 장치 제조업체에서 교체할 수 있습니다. 소스 코드 는 Android 오픈 소스 프로젝트에서 사용할 수 있으며 참조 TV 앱 문서에서 시작할 수 있습니다.

장치 제조업체는 장치 제조업체 또는 국가별 기능을 구현하기 위해 TV 앱을 확장할 수 있지만 이는 TIF 또는 참조 TV 앱의 범위에 속하지 않습니다.

최소한 시스템 TV 앱은 다음 작업을 처리해야 합니다.

설정 및 구성

  • TV 입력 자동 감지
  • TV 입력으로 채널 설정 시작
  • 자녀 보호 설정 제어
  • 채널 수정

보기

  • 모든 TV 채널 액세스 및 탐색
  • TV 프로그램 정보 표시줄에 액세스
  • 전자 프로그래밍 가이드(EPG) 데이터 표시
  • 여러 오디오 및 자막 트랙 지원
  • 자녀 보호 PIN 챌린지 제공
  • TV 표준(HbbTV 등)에 대한 TV 입력 UI 오버레이 허용
  • TV 채널 및 프로그램에 대한 검색 결과 채우기
  • 앱 연결 카드 표시
  • 타임시프팅 API 지원
  • DVR 기능 처리 및 TV 녹화 API 지원

이 기능 세트는 플랫폼 TIF API가 확장되는 새로운 Android 버전에 맞춰 증가합니다. CTS Verifier는 호환성 테스트 범위를 제공합니다.

타사 TV 입력 지원

Android TV는 타사 TV 입력을 위한 개발자 API를 제공하여 설치된 앱이 라이브 TV 환경에 소프트웨어 채널을 제공할 수 있도록 합니다. 호환되는 Android 기기 구현을 보장하기 위해 시스템 TV 앱은 타사 TV 입력 및 채널을 사용자에게 표시하는 것과 관련된 몇 가지 책임이 있습니다. 참조 라이브 TV 앱은 호환 가능한 구현을 제공합니다. 시스템 TV 앱을 교체하는 경우 기기 제조업체는 모든 Android TV 기기에서 개발자 기대치를 충족하기 위해 자체 앱이 유사한 호환성을 제공하는지 확인해야 합니다.

시스템 TV 앱은 장치의 기본 라이브 TV 서비스와 함께 타사 입력을 표시해야 합니다. 개발자 API의 약속은 사용자가 표준 TV 환경 내에서 채널을 찾을 수 있다는 것입니다.

Android CDD의 TV 앱 섹션에 정의된 대로 기본 제공 채널과 타사 채널 간의 시각적 구분이 허용됩니다.

다음 섹션에서는 Live TV 응용 프로그램이 CDD 요구 사항을 충족하는 방법을 보여줍니다.

새 채널 설정

새로운 타사 입력/채널 추가는 사용자가 Google Play와 같은 애플리케이션 스토어에서 TV 입력을 찾아 설치하는 것으로 시작됩니다.

일부 타사 TV 입력은 TvProvider 데이터베이스에 채널을 자동으로 추가합니다. 그러나 대부분은 사용자가 채널을 설정하고 로그인 세부 정보 및 기타 작업을 제공할 수 있도록 설정 활동을 제공합니다. 시스템 TV 앱은 사용자가 이 설정 활동을 활성화할 수 있는지 확인해야 하며, 이것이 CDD가 기본 TV 앱에서 떨어져 있는 최소한의 탐색 작업이 되도록 타사 입력을 요구하는 이유입니다.

참조 라이브 TV 앱은 입력에 액세스하기 위한 채널 소스 메뉴를 제공합니다.

설정으로 바로 가기
그림 8. 설정 으로 이동합니다.

설정에서 채널 소스로 이동
그림 9. 설정에서 채널 소스 로 이동합니다.

목록에서 소스를 선택합니다.
그림 10. 목록에서 소스를 선택합니다.

소스에서 채널 추가
그림 11. 소스에서 채널 추가

또한 새 TvInput이 설치된 후 TV 앱 메뉴 상단에 알림 카드가 표시되어 사용자를 직접 설정으로 안내합니다.

새 채널 소스를 표시하는 알림을 사용할 수 있습니다.
그림 12. 새 채널 소스를 사용할 수 있음을 보여주는 알림.

사용자가 알림을 통해 조치를 취하면 그림 10과 같이 소스를 설정하도록 선택할 수 있습니다.

이 영역에 대한 개발자 기대치는 TV 입력 서비스 정의 를 참조하세요.

채널 목록 사용자 지정

장치 제조업체는 특정 채널을 숨기고 사용자가 자신의 EPG를 관리할 수 있도록 UI를 제공할 수 있습니다. 라이브 TV에는 이 시설이 포함되어 있습니다.

설정에서 채널 목록을 엽니다.
그림 13. 설정 에서 채널 목록을 엽니다.

채널 목록을 맞춤설정하세요.
그림 14. 채널 목록 사용자 지정

EPG

타사 입력 개발자는 사용자가 호환되는 모든 Android TV 기기에서 일반적인 사용 중에 채널을 쉽게 탐색할 수 있다는 확신을 가져야 합니다.

타사 입력의 채널은 장치의 표준 라이브 TV 경험 EPG의 일부로 제공되어야 합니다. 타사 채널에 대한 시각적 분리 또는 별도의 카테고리를 사용할 수 있습니다(Android CDD의 TV 앱 섹션 참조). 핵심은 사용자가 설치한 채널을 찾을 수 있다는 것입니다.

제조업체는 최고의 사용자 경험을 보장하기 위해 글로벌 검색 요청에 대한 검색 결과를 포함하도록 TV 앱을 구현해야 합니다. 라이브 TV는 제3자 입력(플랫폼 호환성에 필요)과 내장 입력의 결과를 제공하는 구현( com.android.tv.search.TvProviderSearch 참조)을 제공합니다.

시간 이동

Android 6.0 이상 기기의 경우 TV 앱은 Android 프레임워크 시간 이동 API 를 지원해야 합니다. 또한 제조업체는 사용자가 재생을 일시 중지, 재개, 되감기 및 빨리 감기할 수 있도록 TV 앱에서 재생 컨트롤을 구현해야 합니다.

시간 이동을 지원하는 TV 입력의 경우 TV 앱에서 재생 컨트롤을 표시해야 합니다.

재생 컨트롤
그림 15. 재생 컨트롤

DVR

Android 7.0 이상 기기의 경우 TV 앱은 Android 프레임워크 TV 녹화 API 를 지원해야 녹화된 프로그램을 지원, 나열 및 재생합니다.

이를 통해 장치 제조업체는 DVR 하위 시스템을 TIF에 연결하고 TV 장치에서 DVR 기능을 활성화하거나 통합하는 데 필요한 통합 노력을 크게 줄일 수 있습니다. 또한 타사에서 Android TV 장치에 연결할 수 있는 애프터마켓 DVR 시스템을 제공할 수 있습니다.

라이브 콘텐츠를 녹화하는 것 외에도 TV 앱은 리소스 충돌도 처리합니다. 예를 들어 장치에 두 개의 튜너가 있는 경우 두 개의 프로그램을 동시에 녹음할 수 있습니다. 사용자가 3개의 녹화를 요청하는 경우 TV 앱은 충돌을 처리해야 하며 알림을 표시하거나 사용자가 이러한 요청에 대한 우선 순위를 예약하도록 요청해야 합니다.

TV 앱은 사용자가 한 에피소드를 녹화하도록 요청할 때 시리즈의 모든 향후 에피소드를 녹화할 것인지 묻는 것과 같은 보다 정교한 논리를 구현할 수도 있습니다.

Android TV에서 가능한 DVR 구현을 보려면 다음 다이어그램을 참조하세요.

Android TV에서 디지털 비디오 녹화
그림 16. Android TV에서 디지털 비디오 녹화

  1. TV 입력 서비스는 TV 앱이 가능한 리소스 충돌을 처리할 수 있도록 사용 가능한 튜너 수를 TV 앱에 알려줍니다.
  2. TV 앱은 사용자가 시작한 TV 프로그램 녹화 요청을 수신합니다.
  3. TV 앱은 녹화 일정을 내부 데이터베이스에 저장합니다.
  4. 녹화할 시간이 되면 TV 앱은 녹화와 관련된 채널을 조정하라는 요청을 전달합니다.
  5. TV 입력 서비스는 이 요청을 수신하고 적절한 리소스가 있는지 여부로 응답하고 채널을 조정합니다.
  6. 그런 다음 TV 앱은 녹화 시작 요청을 TV 입력 관리자에 전달합니다.
  7. TV 입력 서비스는 이 요청을 수신하고 녹화를 시작합니다.
  8. TV 입력 서비스는 외부 저장소 또는 클라우드 저장소가 될 수 있는 저장소에 실제 비디오 데이터를 저장합니다.
  9. 녹화를 마칠 시간이 되면 TV 앱은 녹화 중지 요청을 TV 입력 관리자에 전달합니다.
  10. TV 입력 서비스는 요청을 수신하면 녹화를 중지하고 관련 메타데이터를 TV 공급자에 추가하여 요청 시 TV 앱이 사용자에게 녹화를 표시할 수 있도록 합니다.

TV 입력 서비스에서 녹화 기능을 구현하는 방법에 대한 자세한 내용은 이 TV 녹화 문서를 참조하세요.

유용한 리소스

  • Android CDD 및 문서화된 개발자 API는 최종 참조입니다.
  • CTS Verifier는 호환성 테스트 프로그램의 일부로 API를 실행합니다. 라이브 TV에 대해 이것을 실행하는 것은 제3자 입력의 맥락에서 EPG, 검색, 자녀 보호 및 기타 요구 사항을 확인하는 유용한 방법일 수 있습니다.
  • 이 영역에 대한 개발자 기대치는 TV 입력 서비스 정의 를 참조하세요.

부모의 통제

자녀 보호 기능을 사용하면 사용자가 원하지 않는 채널과 프로그램을 차단할 수 있지만 PIN 코드를 입력하여 차단을 우회할 수 있습니다.

자녀 보호 기능에 대한 책임은 TV 앱, TV 입력 관리자 서비스, TV 제공업체 및 TV 입력 간에 공유됩니다.

자녀 보호는 필수이며 CTS Verifier가 적용됩니다.

많은 국가에서 TV 입력이 TVContentRating API 를 통해 사용할 수 있는 등급 시스템을 정의했습니다. 또한 TV 입력은 '가짜' 등급을 도입하는 CTS Verifier 테스트에 의해 입증된 대로 자체 맞춤 등급 시스템을 등록할 수 있습니다. 표준 등급 시스템이 존재하는 국가의 경우 기기 제조업체는 TV 입력 프레임워크 자녀 보호 기능을 포함할 수 있는 다른 메커니즘과 결합하는 것이 좋습니다.

TV 제공업체

각 채널 행에는 PIN 코드를 입력하지 않고 특정 채널을 볼 수 없도록 잠그는 데 사용되는 COLUMN_LOCKED 필드가 있습니다. 프로그램 필드 COLUMN_CONTENT_RATING 은 표시용이며 자녀 보호를 시행하는 데 사용되지 않습니다.

TV 입력 관리자

TV 입력 관리자는 차단된 모든 TvContentRating 을 저장하고 isRatingBlocked() 에 응답하여 지정된 등급의 콘텐츠를 차단해야 하는지 조언합니다.

TV 입력

TV 입력은 표시된 콘텐츠의 등급이 변경되었거나(프로그램 또는 채널 변경 시) 자녀 보호 설정이 변경되었을 때( ACTION_BLOCKED_RATINGS_CHANGEDACTION_PARENTAL_CONTROLS_ENABLED_CHANGED 에서) TV 입력 관리자에서 isRatingBlocked() 를 호출하여 현재 콘텐츠를 차단해야 하는지 확인합니다. . 콘텐츠를 차단해야 하는 경우 TV 입력은 오디오 및 비디오를 비활성화하고 TV 앱에 notifyContentBlocked(TvContentRating) 를 호출하여 현재 콘텐츠가 차단되었음을 알립니다. 콘텐츠가 차단되지 않아야 하는 경우 TV 입력은 오디오 및 비디오를 활성화하고 TV 앱에 notifyContentAllowed() 를 호출하여 현재 콘텐츠가 허용되었음을 알립니다.

TV 앱

자녀 보호 API를 준수하여 호환 가능한 플랫폼을 만들기 위해 시스템 TV 앱은 특정 앱에 의해 등록된 모든 사용자 지정 등급을 포함하여 사용자가 자녀 보호를 관리할 수 있는 방법을 제공해야 합니다.

TV 앱은 현재 콘텐츠가 차단되었음을 TV 입력에서 알리거나 사용자가 차단된 채널을 보려고 할 때 PIN 코드 UI를 표시합니다.

TV 앱은 자녀 보호 설정을 직접 저장하지 않습니다. 사용자가 자녀 보호 설정을 변경하면 차단된 모든 TvContentRating 이 TV 입력 관리자에 의해 저장되고 차단된 채널은 TV 제공자가 저장합니다.

자녀 보호 설정을 변경하려면 TV 앱에서 android.permission.MODIFY_PARENTAL_CONTROLS 권한을 선언해야 합니다.

장치 제조업체는 다음을 수행하는 것이 좋습니다.

  • 호환성 요구 사항을 시연하기 위해 참조 라이브 TV 애플리케이션에 대해 CTS Verifier 자녀 보호 테스트를 실행합니다.
  • 라이브 TV 앱을 자체 TV 앱에 대한 참조로 사용합니다. 특히 ContentRatingsManagerRatingSystemsFragment 소스와 맞춤 등급을 처리하는 방법을 참조하세요.

HDMI-CEC

HDMI-CEC를 사용하면 한 장치에서 다른 장치를 제어할 수 있으므로 단일 리모컨으로 홈 시어터의 여러 기기를 제어할 수 있습니다. Android TV에서 사용하여 설정 속도를 높이고 중앙 TV 앱을 통해 다양한 TV 입력을 원격 제어할 수 있습니다. 예를 들어 입력을 전환하고 장치의 전원을 켜거나 끄는 등의 작업을 수행할 수 있습니다.

Android TIF는 HDMI-CEC를 HDMI 제어 서비스로 구현하므로 기기 제조업체는 더 복잡한 비즈니스 로직을 건너뛰고 경량 Android TV HAL과 상호 작용하는 저수준 드라이버를 개발하기만 하면 됩니다. 표준 구현을 제공할 때 Android는 단편화된 구현과 선택적 기능 지원을 줄임으로써 호환성 문제를 완화하려고 합니다. HDMI 제어 서비스는 입력 및 전원을 포함한 기존 Android 서비스를 사용합니다.

이는 기존 HDMI-CEC 구현이 Android TIF와 상호 운용되도록 재설계되어야 함을 의미합니다. 하드웨어 플랫폼에는 CEC 전원 켜기 및 기타 명령을 수신하는 마이크로프로세서가 포함되어 있는 것이 좋습니다.

Android TV에서 CEC 통합
그림 17. Android TV에서 CEC 통합

  1. CEC 버스는 현재 활성 소스로부터 다른 소스로 전환하라는 명령을 수신합니다.
  2. 드라이버는 명령을 HDMI-CEC HAL에 전달합니다.
  3. HAL은 모든 ActiveSourceChangeListeners 에 알립니다.
  4. HDMI 제어 서비스는 ActiveSourceChangeListener 를 통해 소스 변경에 대한 알림을 받습니다.
  5. TV 입력 관리자 서비스는 TV 앱이 소스를 전환할 의도를 생성합니다.
  6. 그런 다음 TV 앱은 전환되는 TV 입력에 대한 TV 입력 관리자 세션을 만들고 해당 세션에서 setMain 을 호출합니다.
  7. TV 입력 관리자 세션은 이 정보를 HDMI TV 입력으로 전달합니다.
  8. HDMI TV 입력은 측파대 표면 설정을 요청합니다.
  9. TV 입력 관리자 서비스는 표면이 설정되면 HDMI 제어 서비스에 해당하는 라우팅 제어 명령을 다시 생성합니다.

TV 통합 가이드라인

방송 앱

각 국가에는 방송 관련 요구 사항(MHEG, Teletext, HbbTV 등)이 있으므로 제조업체는 방송 앱에 대한 자체 솔루션을 제공해야 합니다. 예를 들면 다음과 같습니다.

  • MHEG: 기본 스택
  • 텔레텍스트: 네이티브 스택
  • HbbTV: Vewd Software의 HbbTV 솔루션

Android L 릴리스에서 Android TV는 기기 제조업체가 지역 TV 스택에 시스템 통합자 또는 Android 솔루션을 사용하거나, 표면을 TV 소프트웨어 스택에 전달하거나, 레거시 스택과 상호 작용하는 데 필요한 키 코드를 전달하기를 기대합니다.

방송 앱과 TV 앱이 상호 작용하는 방식은 다음과 같습니다.

  1. TV 앱이 모든 키를 수신하는 포커스에 있습니다.
  2. TV 앱은 키(예: 빨간색 버튼)를 TV 입력 장치에 전달합니다.
  3. TV 입력 장치는 내부적으로 기존 TV 스택과 통합됩니다.
  4. 활성화 키 코드(예: 빨간색 버튼)를 수신하면 TV 입력 장치가 방송 앱을 활성화합니다.
  5. 방송 앱은 TV 앱에 초점을 맞추고 사용자 작업을 처리합니다.

음성 검색/추천을 위해 방송 앱은 음성 검색을 위한 인앱 검색을 지원할 수 있습니다.