추천 채널에 콘텐츠 표시
Android TV 홈 화면 또는 홈 화면 은 권장 콘텐츠를 채널 및 프로그램 테이블로 표시하는 UI를 제공 합니다 . 각 행은 채널입니다. 채널에는 해당 채널에서 사용할 수있는 모든 프로그램의 카드가 있습니다.
이 문서는 홈 화면에 채널과 프로그램을 추가하고, 콘텐츠를 업데이트하고, 사용자 작업을 처리하고, 사용자에게 최상의 경험을 제공하는 방법을 보여줍니다. (API에 대해 더 자세히 알고 싶다면 홈 화면 코드 랩을 시도 하고 I / O 2017 Android TV 세션을 시청하십시오 .)
참고 : 추천 채널은 Android 8.0 (API 레벨 26) 이상에서만 사용할 수 있습니다. Android 8.0 (API 레벨 26) 이상에서 실행되는 앱에 대한 권장 사항을 제공하려면이 코드를 사용해야합니다. 이전 버전의 Android에서 실행되는 앱에 대한 권장 사항을 제공하려면 앱에서 추천 행을 대신 사용해야합니다 .
홈 스크린 UI
앱은 새로운 채널을 만들고 채널에서 프로그램을 추가, 제거 및 업데이트하고 채널에서 프로그램의 순서를 제어 할 수 있습니다. 예를 들어 앱은 '새로운 기능'이라는 채널을 만들고 새로 사용 가능한 프로그램에 대한 카드를 보여줄 수 있습니다.
앱은 채널이 홈 화면에 표시되는 순서를 제어 할 수 없습니다. 앱이 새 채널을 만들면 홈 스크린이 채널 목록의 맨 아래에 채널을 추가합니다. 사용자는 채널을 재정렬, 숨기기 및 표시 할 수 있습니다.
다음 채널보기
홈 화면에 나타나는 첫 번째 채널에는 '다음보기'라는 라벨이 지정됩니다. 시스템은이 채널을 생성하고 유지 관리합니다. 앱에서이 채널을 이동, 제거 또는 숨길 수 없습니다. 이 채널에 프로그램을 추가 할 수 있습니다. 예를 들어 사용자가 재미 있다고 표시하거나 중간에 시청을 중단 한 프로그램 또는 사용자가보고있는 콘텐츠와 관련된 프로그램 (예 : 프로그램의 다음 시즌 또는 다음 에피소드) .
앱 채널
앱에서 만드는 채널은 모두 다음 라이프 사이클을 따릅니다.
- 사용자가 앱의 채널을 검색하여 홈 화면에 추가하도록 요청합니다.
- 앱이 채널을 생성하고 채널에 추가합니다
TvProvider
(이 시점에서는 채널이 표시되지 않음). - 앱이 시스템에 채널을 표시하도록 요청합니다.
- 시스템에서 사용자에게 새 채널을 승인하도록 요청합니다.
- 새 채널이 홈 화면의 마지막 행에 나타납니다.
기본 채널
앱에서 사용자가 홈 화면에 추가 할 수있는 모든 채널을 제공 할 수 있습니다. 사용자는 일반적으로 홈 스크린에 나타나기 전에 각 채널을 선택하고 승인해야합니다. 모든 앱에는 하나의 기본 채널 을 만들 수있는 옵션이 있습니다. 기본 채널은 홈 화면에 자동으로 나타나기 때문에 특별합니다. 사용자는 명시 적으로 요청할 필요가 없습니다.
선결 요건
Android TV 홈 화면은 Android TvProvider
API를 사용하여 앱에서 만드는 채널과 프로그램을 관리합니다. 공급자의 데이터에 액세스하려면 앱의 매니페스트에 다음 권한을 추가하십시오.
<uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA" />
<uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />
TvProvider
지원 라이브러리는 쉽게 공급자를 사용 할 수 있습니다. build.gradle
파일 의 종속성에 추가 하십시오.
compile 'com.android.support:support-tv-provider:27.0.0'
채널과 프로그램을 사용하려면 프로그램에 다음과 같은 지원 라이브러리 가져 오기를 포함해야합니다.
import android.support.media.tv.Channel;
import android.support.media.tv.TvContractCompat;
import android.support.media.tv.ChannelLogoUtils;
import android.support.media.tv.PreviewProgram;
import android.support.media.tv.WatchNextProgram;
채널
앱에서 만드는 첫 번째 채널이 기본 채널이됩니다. 기본 채널이 홈 화면에 자동으로 나타납니다. 사용자가 만든 다른 모든 채널은 홈 화면에 나타나기 전에 사용자가 선택하고 수락해야합니다.
채널 만들기
앱이 포 그라운드에서 실행될 때만 새로 추가 된 채널을 표시하도록 시스템에 요청해야합니다. 이렇게하면 사용자가 다른 앱을 실행하는 동안 채널 추가 승인 대화 상자가 앱에 표시되지 않습니다. 백그라운드에서 실행 중일 때 채널을 추가하려고하면 활동의 onActivityResult()
메소드가 상태 코드를 반환합니다 RESULT_CANCELED
.
채널을 만들려면 다음 단계를 따르십시오.
- 채널 빌더를 만들고 속성을 설정하십시오.
Channel.Builder builder = new Channel.Builder();
// Every channel you create must have the type `TYPE_PREVIEW`
builder.setType(TvContractCompat.Channels.TYPE_PREVIEW)
.setDisplayName("Channel Name")
.setAppLinkIntentUri(uri);채널 유형은이어야합니다
TYPE_PREVIEW
. 필요에 따라 더 많은 속성 을 추가하십시오 . - 제공자에게 채널을 삽입하십시오.
Uri channelUri = context.getContentResolver().insert(
TvContractCompat.Channels.CONTENT_URI, builder.build().toContentValues());채널에 프로그램을 나중에 추가하려면 채널 ID를 저장해야합니다. 반환 된 URI에서 채널 ID를 추출합니다.
long channelId = ContentUris.parseId(channelUri);
- 채널 로고를 추가해야합니다. 용도
Uri
또는Bitmap
:// Choose one or the other
storeChannelLogo(Context context, long channelId, Uri logoUri); // also works if logoUri is a URL
storeChannelLogo(Context context, long channelId, Bitmap logo);로고 아이콘은 80dp x 80dp 여야하며 불투명해야합니다. 원형 마스크 아래에 표시됩니다.
- 기본 채널 만들기 (선택 사항) :
앱이 첫 번째 채널을 만들면 기본 채널로 만들어 사용자 작업없이 바로 홈 화면에 나타낼 수 있습니다 .
TvContractCompat.requestChannelBrowsable(context, channelId);
사용자가 만든 다른 모든 채널은 사용자가 명시 적으로 선택 하지 않으면 표시되지 않습니다 .
채널 업데이트 중
채널을 업데이트하는 것은 채널을 만드는 것과 매우 유사합니다.
다른 Channel.Builder
속성을 사용 하여 변경할 속성을 설정하십시오.
를 사용하여 ContentResolver
채널을 업데이트하십시오. 채널을 처음 추가 할 때 저장 한 채널 ID를 사용하십시오.
context.getContentResolver().update(TvContractCompat.buildChannelUri(channelId),
builder.build().toContentValues(), null, null);
채널의 로고를 업데이트하려면를 사용하십시오 storeChannelLogo()
.
채널 삭제하기
context.getContentResolver().delete(TvContractCompat.buildChannelUri(channelId), null, null);
프로그램
앱 채널에 프로그램 추가하기
만들기 PreviewProgram.Builder
및 해당 특성을 설정 하십시오 .
PreviewProgram.Builder builder = new PreviewProgram.Builder();
builder.setChannelId(channelId)
.setType(TvContractCompat.PreviewPrograms.TYPE_CLIP)
.setTitle("Title")
.setDescription("Program description")
.setPosterArtUri(uri)
.setIntentUri(uri)
.setInternalProviderId(appProgramId);
프로그램 유형에 따라 더 많은 특성을 추가하십시오. (각 유형의 프로그램에서 사용할 수있는 속성을 보려면 아래 표를 참조하십시오 .)
공급자를 프로그램에 삽입하십시오.
Uri programUri = context.getContentResolver().insert(TvContractCompat.PreviewPrograms.CONTENT_URI,
builder.build().toContentValues());
나중에 참조 할 수 있도록 프로그램 ID를 검색하십시오.
long programId = ContentUris.parseId(programUri);
다음 채널보기에 프로그램 추가
다음 채널보기에 프로그램을 삽입하는 것은 프로그램을 자신의 채널에 삽입하는 것과 같습니다. 4 종류의 프로그램이 있습니다. 적절한 유형을 선택하십시오.
유형 | 노트 |
---|---|
WATCH_NEXT_TYPE_CONTINUE | 사용자가 콘텐츠를 보는 중간에 앱을 중지 할 때 앱에 의해 삽입됩니다. |
WATCH_NEXT_TYPE_NEXT | 사용자가보고있는 시리즈에서 다음 사용 가능한 프로그램을 제안하기 위해 앱에 삽입되었습니다. 예를 들어, 사용자가 시리즈의 에피소드 3을보고있는 경우 앱은 다음에 에피소드 4를 시청할 것을 제안 할 수 있습니다. |
WATCH_NEXT_TYPE_NEW | 새 콘텐츠를 사용할 수있을 때 앱에 의해 삽입됩니다 (시리즈 또는 새 시즌의 새 에피소드). 예를 들어 사용자가 시리즈에서 5 번 에피소드를보고 있고 6 번을 시청할 수있게됩니다. |
WATCH_NEXT_TYPE_WATCHLIST | 사용자가 특정 프로그램을 저장하겠다고 표시하면 시스템이나 앱에 의해 삽입됩니다. |
다음을 사용하십시오 WatchNextProgram.Builder
:
WatchNextProgram.Builder builder = new WatchNextProgram.Builder();
builder.setType(TvContractCompat.WatchNextPrograms.TYPE_CLIP)
.setWatchNextType(TvContractCompat.WatchNextPrograms.WATCH_NEXT_TYPE_CONTINUE)
.setLastEngagementTimeUtcMillis(time)
.setTitle("Title")
.setDescription("Program description")
.setPosterArtUri(uri)
.setIntentUri(uri)
.setInternalProviderId(appProgramId);
Uri watchNextProgramUri = context.getContentResolver()
.insert(TvContractCompat.WatchNextPrograms.CONTENT_URI, builder.build().toContentValues());
사용 TvContractCompat.buildWatchNextProgramUri(long watchNextProgramId)
만들기 위해 Uri
당신이 시계 다음 프로그램을 업데이트해야합니다.
사용자가 Watch Next 채널에 프로그램을 추가하면 시스템은 채널에 프로그램을 복사합니다. 그것은 TvContractCompat.ACTION_PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT
프로그램이 추가되었음을 앱에 알리기 위한 의도 를 보냅니다 . 인 텐트에는 복사 된 프로그램 ID와 다음 채널보기 채널에서 프로그램 용으로 생성 된 프로그램 ID가 포함됩니다.
프로그램 업데이트
프로그램의 정보를 변경할 수 있습니다. 예를 들어 영화 대여 가격을 업데이트하거나 사용자가 시청 한 프로그램의 양을 보여주는 진행률 막대를 업데이트 할 수 있습니다.
를 사용하여 PreviewProgram.Builder
변경해야하는 속성을 설정 한 다음 getContentResolver().update
프로그램을 업데이트하기 위해 호출 하십시오. 프로그램을 처음 추가 할 때 저장 한 프로그램 ID를 지정하십시오.
context.getContentResolver().update(TvContractCompat.buildPreviewProgramUri(programId),
builder.build().toContentValues(), null, null);
프로그램 삭제하기
context.getContentResolver().delete(TvContractCompat.buildPreviewProgramUri(programId), null, null);
사용자 작업 처리
앱을 사용하면 채널을 표시하고 추가 할 수있는 UI를 제공하여 사용자가 콘텐츠를 쉽게 찾을 수 있습니다. 앱이 홈 화면에 표시된 후에도 채널과의 상호 작용을 처리해야합니다.
채널 발견 및 추가
앱에서 채널을 선택하고 추가 할 수있는 UI 요소 (예 : 채널 추가를 요청하는 버튼)를 제공 할 수 있습니다. 사용자가 특정 채널을 요청하면이 코드를 실행하여 홈 화면 UI에 추가 할 수있는 권한을 얻습니다.
Intent intent = new Intent(TvContractCompat.ACTION_REQUEST_CHANNEL_BROWSABLE);
intent.putExtra(TvContractCompat.EXTRA_CHANNEL_ID, channelId);
try {
activity.startActivityForResult(intent, 0);
} catch (ActivityNotFoundException e) {
// handle error
}
시스템은 사용자에게 채널 승인을 요청하는 대화 상자를 표시합니다. onActivityResult
활동 의 방법 ( Activity.RESULT_CANCELED
또는 Activity.RESULT_OK
) 에서 요청의 결과를 처리하십시오 .
Android TV 홈 화면 이벤트
사용자가 앱에서 게시 한 프로그램 / 채널과 상호 작용하면 홈 화면에서 앱에 인 텐트를 전송합니다.
- 홈 스크린은
Uri
사용자가 채널의 로고를 선택할 때 채널의 APP_LINK_INTENT_URI 속성에 저장된 앱을 앱으로 보냅니다 . 앱은 기본 UI 또는 선택한 채널과 관련된보기를 시작해야합니다. - 홈 화면은
Uri
사용자가 프로그램을 선택할 때 프로그램의 INTENT_URI 속성에 저장된 것을 앱에 보냅니다 . 앱에서 선택한 콘텐츠를 재생해야합니다. - 사용자는 더 이상 프로그램에 관심이없고 홈 화면의 UI에서 제거하려고 함을 나타낼 수 있습니다. 시스템은 UI에서 프로그램을 제거하고 프로그램의 ID와 함께 프로그램을 소유 한 앱에 인 텐트 (android.media.tv.ACTION_PREVIEW_PROGRAM_BROWSABLE_DISABLED 또는 android.media.tv.ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED)를 보냅니다. 앱은 프로 바이더로부터 프로그램을 삭제해야하고 다시 삽입해서는 안됩니다.
Uris
홈 화면이 사용자 상호 작용을 위해 보내는 모든 것에 대한 인 텐트 필터를 만들어야합니다 . 예 :
<receiver
android:name=".WatchNextProgramRemoved"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.media.tv.ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED" />
</intent-filter>
</receiver>
모범 사례
- 앱은 기본 채널을 삽입하고 가능한 한 빨리 사용자에게 콘텐츠를 제공해야합니다. 앱을 설치 한 후 시스템이 전송
BroadcastReceiver
하는android.media.tv.action.INITIALIZE_PROGRAMS
"wakeup"인 텐트를 수신 하는 장치 를 추가하여이 작업을 수행 할 수 있습니다 . 드물 긴하지만 사용자가 앱을 시작하면 앱에서 '깨우기'브로드 캐스트를 수신 할 수 있습니다. 코드에서 기본 채널을 두 번 이상 추가하면 안됩니다. - 앱이 포 그라운드에 있지 않고 채널이나 프로그램을 업데이트해야하는 경우에는
JobScheduler
을 사용 하여 작업을 예약하십시오 ( JobScheduler 및 JobService 참조 ). - 앱이 오작동하는 경우 시스템에서 앱의 제공자 권한을 취소 할 수 있습니다 (예 : 데이터로 제공자를 지속적으로 스팸하는 경우). 보안 예외를 처리하려면 try-catch 절을 사용하여 공급자에 액세스하는 코드를 래핑해야합니다.
프로그램 및 채널을 업데이트하기 전에 공급자에게 데이터를 업데이트하고 조정해야하는 데이터를 쿼리하십시오. 예를 들어 사용자가 UI에서 제거하려는 프로그램을 업데이트 할 필요가 없습니다. 기존 데이터를 쿼리 한 다음 채널 승인을 요청한 후 공급자에 데이터를 삽입 / 업데이트하는 백그라운드 작업을 사용하십시오. 앱이 시작될 때와 앱이 데이터를 업데이트해야 할 때마다이 작업을 실행할 수 있습니다.
try (Cursor cursor =
context.getContentResolver()
.query(
TvContractCompat.buildChannelUri(channelId),
null,
null,
null,
null)) {
if (cursor != null && cursor.moveToNext()) {
Channel channel = Channel.fromCursor(cursor);
if (channel.isBrowsable()) {
//update channel's programs
}
}
}모든 이미지 (로고, 아이콘, 내용 이미지)에 대해 고유 한 Uris를 사용하십시오. 이미지를 업데이트 할 때 다른 Uri를 사용해야합니다. 모든 이미지가 캐싱됩니다. 이미지를 변경할 때 Uri를 변경하지 않으면 이전 이미지가 계속 나타납니다.
- WHERE 절은 허용되지 않으며 WHERE 절을 사용하여 공급자에 대한 호출은 보안 예외를 throw합니다.
이전 버전과의 호환성
속성
이 절에서는 채널 및 프로그램 속성을 별도로 설명합니다.
채널 속성
모든 채널에 대해 다음 속성을 지정해야합니다.
속성 | 노트 |
---|---|
유형 | 로 설정됩니다 TYPE_PREVIEW . |
DISPLAY_NAME | 채널 이름으로 설정하십시오. |
APP_LINK_INTENT_URI | 사용자가 채널의 로고를 선택하면 시스템은 채널과 관련된 컨텐츠를 제공하는 활동을 시작하기위한 의도를 보냅니다. 이 액티비티의 인 텐트 필터에 사용 된 Uri에이 애트리뷰트를 설정한다. |
또한 채널에는 내부 앱 사용을 위해 예약 된 6 개의 입력란이 있습니다. 이 입력란은 앱이 채널을 내부 데이터 구조에 매핑하는 데 도움이되는 키 또는 기타 값을 저장하는 데 사용할 수 있습니다.
- INTERNAL_PROVIDER_ID
- INTERNAL_PROVIDER_DATA
- INTERNAL_PROVIDER_FLAG1
- INTERNAL_PROVIDER_FLAG2
- INTERNAL_PROVIDER_FLAG3
- INTERNAL_PROVIDER_FLAG4
프로그램 속성
비디오 프로그램 속성
비디오 프로그램의 속성은 프로그램 유형에 따라 다릅니다. 비디오 프로그램은 다음 유형 중 하나 일 수 있습니다.
- TYPE_MOVIE
- TYPE_TV_SERIES
- TYPE_TV_SEASON
- TYPE_TV_EPISODE
- TYPE_CLIP
- TYPE_EVENT
- TYPE_CHANNEL
속성은 두 개의 그룹, 즉 필수 속성과 선택적 속성에 속합니다.
필수 동영상 속성
모든 유형의 비디오 프로그램에 대해 다음 속성을 지정해야합니다.
- INTENT_URI
- CHANNEL_ID
- 표제
- POSTER_ART_ASPECT_RATIO
- POSTER_ART_URI
이러한 속성은 일부 유형의 비디오 프로그램에 필요하며 다른 속성에는 선택적입니다. 속성이 선택 사항 인 경우 괄호로 묶습니다.
속성 | 영화 | TV 시리즈 | TV 시즌 | TV 에피소드 | 클립 | 행사 | 채널 |
---|---|---|---|---|---|---|---|
CONTENT_RATING | ✔ | ✔ | ✔ | ✔ | (✔) | (✔) | (✔) |
DURATION_MILLIS | ✔ | ✔ | ✔ | (✔) | |||
EPISODE_DISPLAY_NUMBER | ✔ | ||||||
SEASON_DISPLAY_NUMBER | ✔ | ✔ |
선택적 비디오 속성
이러한 선택적 속성은 프로그램 유형에 따라 사용할 수 있습니다.
속성 | 영화 | TV 시리즈 | TV 시즌 | TV 에피소드 | 클립 | 행사 | 채널 |
---|---|---|---|---|---|---|---|
저자 | ✔ | ||||||
유효성 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
CANONICAL_GENRE | ✔ | ✔ | ✔ | ✔ | |||
EPISODE_TITLE | ✔ | ||||||
INTERACTION_COUNT | ✔ | ✔ | |||||
INTERACTION_TYPE | ✔ | ✔ | |||||
INTERNAL_PROVIDER_ID | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
ITEM_COUNT | ✔ | ✔ | |||||
살고 있다 | ✔ | ✔ | ✔ | ✔ | ✔ | ||
LOGO_URI | ✔ | ✔ | |||||
가격을 제시하다 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
PREVIEW_VIDEO_URI | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
출시일 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
REVIEW_RATING | ✔ | ✔ | ✔ | ✔ | ✔ | ||
REVIEW_RATING_STYLE | ✔ | ✔ | ✔ | ✔ | ✔ | ||
간단한 설명 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
STARTING_PRICE | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
THUMBNAIL_ASPECT_RATIO | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
THUMBNAIL_URI | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
VIDEO_HEIGHT | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
VIDEO_WIDTH | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
무게 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
이미지 미리보기
미리보기 이미지에 권장되는 크기는 다음과 같습니다.
종횡비 | 폭 | 신장 |
16:9 | 272dp | 153dp |
3:2 | 229.5dp | 153dp |
4:3 | 204dp | 153dp |
1:1 | 153dp | 153dp |
2:3 | 102dp | 153dp |
최상의 품질을 얻으려면 미리보기 비디오가 16 : 9 또는 4 : 3이고 위의 표에 지정된 크기 이상이어야합니다. 로고는 또한 최상의 사용자 경험을 위해 불투명해야합니다.
VIDEO_WIDTH 및 VIDEO_HEIGHT를 사용하여 정확한 미리보기 비디오 크기를 지정할 수 있습니다.
오디오 프로그램 속성
오디오 프로그램의 속성은 프로그램 유형에 따라 다릅니다. 오디오 프로그램은 다음 유형 중 하나 일 수 있습니다.
- TYPE_TRACK
- TYPE_ALBUM
- TYPE_ARTIST
- TYPE_PLAYLIST
- TYPE_STATION
속성은 두 개의 그룹, 즉 필수 속성과 선택적 속성에 속합니다.
필수 오디오 속성
모든 유형의 오디오 프로그램에 대해 다음 속성을 지정해야합니다.
- INTENT_URI
- CHANNEL_ID
- POSTER_ART_URI
- POSTER_ART_ASPECT_RATIO
- 표제
또한 DURATION_MILLIS
오디오 트랙에 필요합니다.
선택적 오디오 속성
이러한 선택적 속성은 프로그램 유형에 따라 사용할 수 있습니다.
속성 | 선로 | 앨범 | 예술가 | 재생 목록 | 역 |
---|---|---|---|---|---|
저자 | ✔ | ✔ | ✔ | ||
유효성 | ✔ | ✔ | ✔ | ✔ | ✔ |
INTERACTION_COUNT | ✔ | ✔ | ✔ | ||
INTERACTION_TYPE | ✔ | ✔ | ✔ | ||
INTERNAL_PROVIDER_ID | ✔ | ✔ | ✔ | ✔ | ✔ |
살고 있다 | ✔ | ||||
LOGO_URI | ✔ | ||||
가격을 제시하다 | ✔ | ✔ | ✔ | ✔ | ✔ |
PREVIEW_VIDEO_URI | ✔ | ✔ | ✔ | ✔ | ✔ |
출시일 | ✔ | ✔ | |||
간단한 설명 | ✔ | ✔ | ✔ | ✔ | ✔ |
STARTING_PRICE | ✔ | ✔ | ✔ | ✔ | ✔ |
THUMBNAIL_ASPECT_RATIO | ✔ | ✔ | ✔ | ✔ | ✔ |
THUMBNAIL_URI | ✔ | ✔ | ✔ | ✔ | ✔ |
VIDEO_HEIGHT | ✔ | ✔ | ✔ | ✔ | ✔ |
VIDEO_WIDTH | ✔ | ✔ | ✔ | ✔ | ✔ |
무게 | ✔ | ✔ | ✔ | ✔ | ✔ |
다음 프로그램 속성보기
다음 비디오보기 채널에 오디오 또는 비디오 프로그램을 추가 할 때 오디오 / 비디오의 필수 및 선택 속성 외에도 다음 속성을 포함해야합니다.
속성 | 노트 |
---|---|
WATCH_NEXT_TYPE | 다음 채널보기 프로그램 유형 중 하나를 선택하십시오 . |
LAST_ENGAGEMENT_TIME_UTC_MILLIS | 사용자 / 앱이 마지막으로 프로그램에 참여한 시간입니다. |
LAST_PLAYBACK_POSITION_MILLIS | WATCH_NEXT_TYPE_CONTINUE에만 필요합니다. |
DURATION_MILLIS | WATCH_NEXT_TYPE_CONTINUE에만 필요합니다. |
https://developer.android.com/training/tv/discovery/recommendations-channel.html
'Android Mini PC' 카테고리의 다른 글
CNX 가장 좋은 Android TV Box (2017/2018 Edition)는 무엇인가요? - U5PVR 디럭스 선정됨 (0) | 2017.12.28 |
---|---|
Video Playback with the Google Assistant on Android TV (0) | 2017.12.28 |
[번역] Google, Android TV의 Oreo 레거시 권장 사항 행 폐지 (0) | 2017.12.28 |
U5 SBC PCB 레이아웃 초안 171227 (0) | 2017.12.27 |
U5PVR 2160P 비디오 설정관련 의견 (0) | 2017.12.26 |