Amazonカタログへのメディアの統合
音声対応リモコンでマイクボタンを押すと、ユーザーがFire TVを使用しているかどうかにかかわらず、(アプリ内のLeanbackライブラリではなく)Alexaクラウドサービスを使用してグローバル検索が開始されます。
- 音声によるメディアリクエスト
- a.アプリのメディアをAmazonカタログに統合する
- b.フィードとカタログの申請にコンテンツIDを含める
- ブロードキャストインテントをリッスンするようにアプリを構成する方法
- カタログ統合のテスト
音声によるメディアリクエスト
音声でメディアをリクエストすると(たとえば、見たいテレビ番組を言うと)、常にAmazonカタログからコンテンツが返されます。カタログの検索は、アプリ内ではなくクラウド上で実行されます。
Fire TVに検索機能を実装する方法の詳細については、検索機能の実装を参照してください。エンドユーザーの視点から見たFire TVのAlexa音声機能の詳細については、Fire TVでAlexaを使用する方法を参照してください。
独自のアプリのメディアをグローバル検索の結果に表示するには、メディアをAmazonカタログに統合する必要があります。Amazonカタログには、Fire TVのすべてのメディアコンテンツのインデックスが含まれています。
アプリのコンテンツをカタログに組み込むプロセスは、「カタログ統合」と呼ばれます。 カタログ統合では、カタログサービスに定期的にコンテンツをプッシュする必要があります(カタログサービスはフィードからの読み取りは行いません)。このタスクは開発者が構成する必要があります。Fire App Builderはカタログ統合を自動的には実行しません。詳細については、カタログ統合についてを参照してください。
検索が開始されると、Fire TVはインテントのブロードキャストをアプリに送信します。インテント(「意図」という意味)とは、アプリに目的のアクションを実行するように伝えるメッセージのことです。アプリのマニフェストファイルで、このインテントをリッスンしてアクションを実行するインテントフィルターを宣言する必要があります(インテントフィルターについてはAndroidのドキュメントを参照してください)。 Fire App Builderには、実際にアプリでブロードキャストインテントをリッスンするためのコードが用意されています。インテントのリッスンを開始する準備ができたら、そのコードのコメントを解除するだけです(後述のブロードキャストインテントをリッスンするようにアプリを構成する方法を参照してください)。
Amazonカタログにメディアを統合し、インテントフィルターを使用してアプリのマニフェストを構成すると、アプリを既にインストールしているユーザーには、アプリのコンテンツが検索結果で直接表示されるようになります。アプリをインストールしていないユーザーには、[その他の視聴方法] オプションが表示されます。ユーザーは、このオプションを使用してアプリを入手し、コンテンツを視聴できます。
a.アプリのメディアをAmazonカタログに統合する
アプリのメディアをAmazonカタログに統合する方法については、カタログ統合についてを参照してください。
Fire App Builderプロジェクトでは、アプリにFire TVランチャーを統合するで説明されている手順が既に完了しています。必要な作業は、次のセクションで説明するように、マニフェストファイルでいくつかのコードのコメントを解除することだけです。
b.フィードとカタログの申請にコンテンツIDを含める
カタログの詳細には、コンテンツアイテムごとに一意のIDが必要です。この一意のコンテンツIDは、メディアフィードのコンテンツIDと一致している必要があります。メディアフィードで各メディアコンテンツアイテムに一意のIDが含まれていない場合は、追加する必要があります。
さらに、クラウド上のカタログ情報と(アプリに組み込まれた)メディアフィードが常に同期されている必要があります。
ブロードキャストインテントをリッスンするようにアプリを構成する方法
ブロードキャストインテントをリッスンするようにアプリを構成するには、次の手順を実行します。
- Android Studioのappフォルダで、manifestsを展開し、AndroidManifest.xmlを開きます。
-
次のように、「Launcher Integration intents」セクションのコメントを解除します。
<!-- Launcher integration intents --> <!-- Uncomment the below intent filters to enable launcher integration --> <intent-filter> <action android:name="PLAY_CONTENT_FROM_LAUNCHER"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> <intent-filter> <action android:name="SIGN_IN_FROM_LAUNCHER"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter>
- ContentBrowser > manifestsに移動し、AndroidManifest.xmlファイルを開きます。
-
次のように、「Launcher integration」セクションのコメントを解除します。
<!-- Uncomment the below receiver to enable launcher integration --> <receiver android:name="com.amazon.android.contentbrowser.helper.LauncherIntegrationBroadcastReceiver" > <intent-filter> <action android:name="com.amazon.device.REQUEST_CAPABILITIES" > </action> </intent-filter> </receiver>
カタログ統合のテスト
アプリにFire TVランチャーを統合したら、Amazonアプリストアにアプリを申請する前に、ランチャー統合を検証する必要があります。ランチャー統合のテストの詳細については、アプリにFire TVランチャーを統合するで説明されています。特に、「手順F: ランチャー統合をテストする」を参照してください。 公開していないアプリでこのテストを有効にするには、次の手順を実行します。
- ContentBrowser > java > com.amazon.android.contentbrowser > helperに移動し、LauncherIntegrationManager.javaを開きます。
-
COM_AMAZON_TV_LAUNCHER
の値をcom.amazon.tv.integrationtestonly
に置き換えます。// 統合テストアプリでテストする場合は、COM_AMAZON_TV_LAUNCHERの値を // "com.amazon.tv.integrationtestonly"に置き換えます。 private static final String COM_AMAZON_TV_LAUNCHER = "com.amazon.tv.integrationtestonly";