Fire TVのTV入力フレームワーク
リニアTVの統合は、TV入力サービスの開発に関するAndroidドキュメントに基づいています。Fire TV固有の技術要件を理解するには、以下のリンクや説明が役立ちます。
予備知識と用語
Fire TVのライブTV機能の詳細に立ち入る前に、予備知識と基本の理解が必要になります。統合を進める前に、以下のドキュメントを参照してください。
- Live TV has a new home on Fire TV(英語のみ)
- TV入力フレームワーク(TIF)
- テレビ入力サービスを開発する
- テレビ入力サービスを作成する
- Android TV対応テレビ入力アプリのサンプル
- Gracenote ID(英語のみ)
リニアTVの統合は、Androidドキュメントの テレビ入力サービスを開発するに基づいています。
統合の詳細
ライブリニアチャンネルを統合するには、ユーザーのチャンネル権限へのアクセスに加え、Fire TVでコンテンツが閲覧および検索されやすくするためのメタデータを提供する必要があります。
ライブチャンネル権限
視聴権限のあるチャンネルのみを(TV入力フレームワーク(TIF)によって提供されている)デバイスのローカルチャンネルデータベースにプッシュするには、アプリを更新する必要があります。チャンネルを更新(または追加/削除)するには、INITIALIZE_PROGRAMS
アクションを使用してブロードキャストレシーバーを登録します。この視聴権限メタデータは、アプリが最初にインストールされたときに確実に更新されるようにします。これは、アプリがバックグラウンドで実行されている間でも実行できます。
チャンネルの編集については、チャンネルデータを利用するを参照してください。
このデータベースにチャンネルがある場合、ユーザーはチャンネルを視聴できます。チャンネルの追加や削除はこのデータベースからいつでも行うことができ、変更は即座にUIに反映されます。これは、このデータベースが、ライブコンテンツの操作時に表示されるすべてのチャンネルの情報源として使用されているためです。
TvContract.Channels
のチャンネル列は、可能な限り埋めてください。GracenoteチャンネルIDがわかっている場合や、再生のディープリンクを指定する場合は、Channels#COLUMN_INTERNAL_PROVIDER_DATA
にその情報を含めることができます(コード例のセクションを参照してください)。
番組メタデータの取得
ライブTVのメタデータを提供する方法は2つあります。
- GracenoteチャンネルIDを使用する
- チャンネルメタデータを自分で挿入する
どちらの方法を使用するかは、チャンネルごとに選択する必要があります。つまり、Gracenote IDを使用するチャンネルと、自分でチャンネルのメタデータを挿入するチャンネルが存在する可能性があります。
Gracenote IDの指定(推奨される方法)
GracenoteチャンネルID(onTV
またはGVD(グローバルビデオデータ))を指定すると、ライブTVアプリを通じて情報が毎日クラウドと同期されます。Gracenote IDが見つかった場合は、最大14日間の番組情報を含むFire TVカタログ内でチャンネルを検索する際に使用されます。この情報は、[ホーム] タブ、[ライブ] タブのほか、番組表にも表示されます。この情報は自動的に更新され、常に最新の状態に保たれます。また、検索機能やAlexaからも検出可能になります。
Gracenote IDがない場合
チャンネルのGracenoteチャンネルIDを指定しない場合は、ロゴなどのすべてのChannelメタデータを挿入し、該当する全チャンネルの今後の番組情報をTvContract.Programsに定期的に挿入する必要があります。ライブTV対応サンプルアプリには、その方法の例が記載されています。
指定できるフィールドは次のとおりです。
CXフィールド | 説明 | 認定に必須 | 関連付けられたTIFフィールド |
---|---|---|---|
番組名 | 番組の名前。画面の左上に表示される大きなテキストです。 | ○ | Title |
再生時間 | 放送時間(例: 午後11:00~午前12:00)。番組名のすぐ下に表示されます。 | ○ | Start_time_utc_millis End_time_utc_millis |
エピソード名 | 放映中のエピソードの名前。再生時間とバッジの下に太字で表示されます。 | ○ | Episode_title |
エピソードの説明 | エピソードの説明。エピソード名の後に続くセクションに、表示可能な範囲で表示されます。この詳細説明はAmazonで使用されますが、簡潔な説明にフォールバックされます。 | ○ | short_descriptionにフォールバックされるlong_description |
シーズンとエピソードの情報 | シリーズに共通の情報(ホームコメディなど)。この放送に関して提供されるシーズンとエピソードの情報です。この情報は、エピソード名の後に続くミニ詳細に含まれます。 | × | Season_display_number Episode_display_number |
レーティング | エピソードの地域のレーティング(バッジ形式)。再生時間と同じ行に表示されます。 | × | content_rating |
クローズドキャプション | 放送がクローズドキャプションをサポートしているかどうかを示すバッジ。再生時間と同じ行に表示されます。 | × | 未サポート(近日サポート予定) |
HD | 放送がHDで撮影されているかどうかを示すバッジ。再生時間と同じ行に表示されます。 | × | 未サポート(近日サポート予定) |
ライブ | 放送が収録と同時に「リアルタイム」で行われていることを示す、カルーセルタイル上のバッジ。 | × | 未サポート(近日サポート予定) |
新着 | 放送が初回放送である(ただしリアルタイムではない)ことを示す、カルーセルタイル上のバッジ。 | × | 未サポート(近日サポート予定) |
番組画像 | カルーセルタイルに表示される16:9の番組/映画の画像。解像度は768x432以上である必要があります。 | ○ | Thumbnail_uri |
背景画像 | ミニ詳細セクションの隣にある右上隅のセクション全体に表示される16:9の番組/映画の画像。解像度は1280x720以上である必要があります。 | ○ | Poster_art_uri |
チャンネル名 | カルーセル内のタイルに表示されるチャンネルの名前。ベストプラクティスに記載のとおり、16文字の英数字または8~10文字の全角文字が表示されます。 | ○ | Display_name |
チャンネルロゴ | EPG(電子番組表)で使用される透明なモノクロロゴ。チャンネルロゴがない場合は、(マーキー内の)チャンネル名にフォールバックされます。 | ○ | logo |
チャンネルの順序
チャンネルの順序によって、Fire TVデバイスのUIに表示されるチャンネルのランクが決まります。ベースラインの順序はプロバイダーが決定しますが、ユーザーはコンテキストメニューやチャンネルマネージャーを使用して、チャンネルをお気に入りとして設定できます。こうすると、そのチャンネルが最も高い優先順位で表示されます。したがって、優先順位としては、お気に入り>チャンネルの順序オプションとなります。Fire TVでは、開発作業のレベルが異なる3つのオプションが用意されています。
- 表示名順は、開発時間を必要としない、従来の最も一般的な順序です。この順序を使用すると、Fire TV UIのチャンネルは、
displayName
に従ってUnicodeで表示されます。たとえば、チャンネルリスト{“XYZ”, “1BC”, and “1 BK”}は、{“1 BK”, “1BC”, “XYZ”}という順序で表示されます。 - チャンネル番号順は、標準のAndroid TVコントラクトに含まれる、
Channel
クラスのdisplayNumber
フィールドによって決まります。チャンネルは、チャンネル番号の昇順で表示されます。このオプションを使用する場合は、開発時に各チャンネルにチャンネル番号を割り当てる必要があります。チャンネル番号が割り当てられていても、ほかの順序オプションを使用することは可能です。 - 最後のオプションは、カスタムのチャンネル順です。この順序を使用すると、プロバイダーのチャンネルは、tv.dbの「_id」と一致する順序で表示されます。この「_id」は、挿入された順に割り当てられます。tv.dbでこれらのチャンネルを更新する場合は、チャンネルの順序を維持する必要があります。これは、ライブTVアプリでもFire TV UIと同じ順序が使用されるためです。
一貫性のあるエクスペリエンスを提供するために、アプリ内での順序に最も近いチャンネル順序を選択することを強くお勧めします。オンボーディングプロセスの一環として、Amazonの担当者と協力し、チャンネル順序の決定方法を選択してください。
全画面再生
次の2つの実装方法があります。
- ディープリンク(特定のアプリで開くリンク)
- ネイティブTVアプリ
ディープリンク。Fire TVでは、独自のアプリで全画面再生を実行できる機能が提供されています。この機能を使用するには、ディープリンクインテントをチャンネル情報の一部としてチャンネルデータベースに挿入します。閲覧または検索中にチャンネルが選択されると、このインテントが起動されます。インテントがアクティブになるたびに、リクエストされたチャンネルの全画面再生が開始されます。詳細については、コードサンプルのセクションを参照してください。
ネイティブTVアプリ。全画面再生を実装するもう1つの方法として、ネイティブのライブTVアプリを使用する方法があります。これを行うには、TvInputService.Session
を使用します。この例については、ライブTV対応サンプルアプリを参照してください。
ライブプレビュー
ディープリンクインテントが提供されている場合でも、TvInputService.Session
を実装する必要があります。ユーザーが閲覧の行にあるいずれかのタイルにフォーカスすると、onTune
が呼び出されます。このとき、アプリの名前またはロゴを含むスプラッシュ画面を表示した後で、リクエストされたチャンネルの再生を、指定のセキュアなSurface
にレンダリングする必要があります。これにより、エンゲージメントが向上します。onTune
リクエストに基づいて、指標を取得したり、ライブコンテンツの読み込みを開始したりすることで、パフォーマンスを高めることもできます。
スプラッシュ画面のガイドライン
- ユーザーがタイルにフォーカスを置いた後、スプラッシュ画面が開始されるまでにかかる時間は、最大で3秒です。
- フォーカスされたコンテンツのビデオプレビューの再生は、スプラッシュ画面が読み込まれてから2秒後に開始する必要があります。
ペアレンタルコントロール
TvInputService
で指定されているサーフェスにアプリでコンテンツをレンダリングする場合(チャンネルのディープリンクがない場合やライブプレビューの場合)は、ペアレンタルコントロールが適切に実装されている必要があります。ペアレンタルコントロールが有効になっている場合、アプリはコンテンツを表示する前に、エンドユーザーにPINの入力を要求します。ブロックされるべきコンテンツが要求されるたびに、TvInputService
でフォアグラウンドのアプリに通知する必要があります。推奨されるフローについては、コードサンプルのセクションを参照してください。
プロバイダーのアトリビューション
次の3つのアイテムを必ずカスタマイズしてください。
1.ラベル
デフォルトでは、アプリのlabel
は、ユーザーがチャンネルを閲覧する際にヘッダーとして使用されます。このラベルは、12文字以下の全角文字または24文字以下の英数字にする必要があります。別の名前を使用したくてもlabelを変更できない場合は、Amazon担当者と相談してオーバーライドされるようにしてください。
2.ロゴ
また、アプリのブランドを表す1つのモノクロロゴも指定する必要があります。
-
Gracenote IDありのロゴ。ロゴは番組アートの上にオーバーレイされます。この画像ファイルの高さは最大34px、幅は最大でオーバーレイ画像の幅の25%までとする必要があります。
-
Gracenote IDなしのロゴ。
TvContract.Programs
のCOLUMN_POSTER_ART_URI
を設定します。画像にはモノクロロゴを入れる必要があります。モノクロロゴは、必ず右上の座標から(-56, 44)の位置に配置してください。
3.バナー
パッケージマネージャーでアプリバナーを指定します。例については、コードサンプルのセクションを参照してください。