アプリのみの統合でサポートされる機能(VSK Fire TV)
アプリのみの統合でサポートされる機能を以下に示します。
- サポート対象の機能の概要
- RemoteVideoPlayer機能
- PlaybackController機能
- SeekController機能
- ChannelController機能
- Alexa.KeypadController機能
サポート対象の機能の概要
アプリの機能を報告する際(手順5: アプリの静的機能を報告するまたは手順6: アプリの動的機能を報告する)、JSONオブジェクト形式で機能を記述したテキストファイルをAndroidプロジェクトのres/rawに保存しました。これらの機能は、マニフェスト(静的機能の場合)またはDynamicCapabilityReporterクラス(動的機能の場合)のいずれかのコードで参照されます。
機能のテキストファイルでは、capabilities配列は、interface、type、version、supportOperationsの各プロパティを持つオブジェクトのリストです。サポートされているインターフェースの詳細については、以下のセクションを参照してください。
RemoteVideoPlayer機能
Alexa.RemoteVideoPlayerを機能に含めると、RemoteVideoPlayerインターフェースのディレクティブをアプリでサポートできることを示すことができます。このインターフェースには、 SearchAndPlayとSearchAndDisplayResultsの2つの操作が含まれます。これらの操作を使用すると、ユーザーはビデオコンテンツの検索や再生を行うことができます。たとえば、ユーザーは「アレクサ、『ブレイキング・バッド』を見せて」(SearchAndPlay)や「アレクサ、『ブレイキング・バッド』を検索して」(SearchAndDisplayResults)という発話を使用できます。開発者はサポートするディレクティブを指定することができます。
例:
{
"type": "AlexaInterface",
"interface": "Alexa.RemoteVideoPlayer",
"version": "3.1",
"configurations": {
"operations": [
"SearchAndPlay",
"SearchAndDisplayResults"
],
"catalogs": [
{
"type": "VIDEO_INGESTION_IDENTIFIER",
"sourceId": "<パートナーIDを挿入>"
}]
}
}
operations配列は、たとえばSearchAndDisplayResultsはサポートせず、SearchAndPlayのみをサポートするなど、特定の操作のみのサポートを宣言するためのオプションのフィールドです。
Alexa.RemoteVideoPlayerのバージョン3.1以降では、catalogsオブジェクトも指定する必要があります。catalogsの値は配列です。この配列には、typeとsourceIdの2つのプロパティを持つオブジェクトが格納されます。値は次のとおりです。
| フィールド | 説明 | データ型 |
|---|---|---|
catalogs(省略可能) |
アプリのカタログを指定します。この配列には、typeとsourceIdの2つのプロパティを持つオブジェクトが格納されます。
|
配列 |
type(省略可能) |
値としてVIDEO_INGESTION_IDENTIFIERを設定します。
|
文字列 |
sourceID(省略可能) |
値としてパートナーIDを設定します。このパートナーIDは、カタログ統合を行う際にカスタマイズしたCDFファイルのPartnerフィールドの値です。
例: |
文字列 |
現在、Fire TVはカタログのマッピングをバックエンドのプロセスで取得し、それにより、ASINとカタログがマッピングされます(そのため、ライブアプリテスト(LAT)への申請の手順が必要になります)。ただし将来的には、ここで指定したパートナーID値に基づいてカタログが取得されるようになります。
PlaybackController機能
PlaybackControllerを使用するのではなく、Android MediaSessionを使用することをお勧めします。Media Sessionは、より低レイテンシで一貫性のあるユーザーエクスペリエンスを実現しながら、同じ機能を提供します。詳細については、手順2: MediaSessionと統合するを参照してください。Alexa.PlaybackControllerを機能に含めると、Alexa.PlaybackControllerインターフェースのディレクティブをアプリでサポートできることを示すことができます。このインターフェースは、オーディオまたはビデオコンテンツの再生、停止、ナビゲーションに使用されます(「アレクサ、早送りして」や「アレクサ、停止して」など)。
PlaybackControllerインターフェースには、configurationsオブジェクト内で指定されたoperations配列のリストが含まれます。使用できるoperationsは、Play、Pause、Stop、StartOver、Next、Previous、Rewind、FastForwardです。
例:
{
"type": "AlexaInterface",
"interface": "Alexa.PlaybackController",
"version": "3",
"configurations": {
"operations": [
"Pause",
"Play",
"Stop",
"Resume",
"Next",
"Previous",
"FastForward",
"Rewind",
"StartOver"
]
}
}
Alexa.SeekControllerインターフェース、Alexa.ChannelControllerインターフェース、Alexa.KeypadControllerインターフェースなど、その他のインターフェースは、アプリのみの統合ではまだサポートされていません。
また、このインターフェースを実装する代わりにAlexa.ChannelControllerインターフェースがサポートされている場合でも、ライブTVフィードで推奨される統合は、リニアTVについてに記載されているとおり、AndroidのTV入力フレームワークを使用する方法です。
SeekController機能
SeekControllerを使用するのではなく、Android MediaSessionを使用することをお勧めします。Media Sessionは、より低レイテンシで一貫性のあるユーザーエクスペリエンスを実現しながら、同じ機能を提供します。詳細については、手順2: MediaSessionと統合するを参照してください。Alexa.SeekControllerを機能に含めると、Alexa.SeekControllerインターフェースのディレクティブをスキルでサポートできることを示すことができます。このインターフェースを使用すると、ユーザーがメディアタイムラインの特定の位置に移動できるようになります。
たとえば、「アレクサ、60秒早送りして」や「アレクサ、5分早戻しして」などです(アプリでメディアアイテムの早送りまたは早戻しのみが可能で、タイムラインの別のポイントまでシークできない場合は、代わりにPlaybackControllerインターフェースを実装します)。
例:
{
"type": "AlexaInterface",
"interface": "Alexa.SeekController",
"version": "3",
"configurations": {
"operations": [
"AdjustSeekPosition"
]
}
}
ChannelController機能
ChannelControllerインターフェースを実装するのではなく、ライブTVの統合を行うことをお勧めします。ライブTVの統合には、Fire TVの [ライブ] タブや番組表の統合など、より多くのメリットがあります。ライブTVの統合は、Fire TVのパートナーに推奨されているアプローチです。Alexa.ChannelControllerを機能に含めると、Alexa.ChannelControllerインターフェースのディレクティブをアプリでサポートできることを示すことができます。このインターフェースを使用すると、エンターテインメントデバイスのチャンネルを変更したり進めたりすることができます(「アレクサ、チャンネルをPBSに変えて」など)。
例:
{
"type": "AlexaInterface",
"interface": "Alexa.ChannelController",
"version": "3",
"configurations": {
"operations": [
"ChangeChannel"
]
}
}
Alexa.KeypadController機能
Alexa.KeypadControllerを含めると、Alexa.KeypadControllerインターフェースのディレクティブをアプリでサポートできることを示すことができます。このインターフェースは、左右または上下へのスクロールや、フォーカスされているウィジェットの選択に使用されます。
たとえば、「アレクサ、右にスクロールして」のようなコマンドを処理できます。 ビデオスキルでサポートするキーのリスト(keys)を指定できます。キー値には、 UP、DOWN、LEFT、RIGHT、SELECT、PAGE_UP、PAGE_DOWN、PAGE_LEFT、PAGE_RIGHT、INFO、MOREがあります。
例:
{
"type": "AlexaInterface",
"interface": "Alexa.KeypadController",
"version": "3",
"configurations": {
"operations": [
"SendKeystroke"
]
}
}
keysプロパティを含んでいるインターフェースは、Alexa.KeypadControllerインターフェースだけです。
アプリ内の音声ナビゲーション・選択で説明しているように、Fire TVではデフォルトで、アプリ内での音声によるスクロールと選択が可能です。Alexa.DiscoveryレスポンスでKeypadControllerインターフェース機能のサポートを明示しないと、VSKはデフォルトのアプリ内音声ナビゲーション・選択機能にフォールバックします。
これに対して、KeypadControllerインターフェース機能のサポートを明示した場合、デフォルトのアプリ内音声ナビゲーション・選択機能は無効になり、音声によるスクロールと選択は、アプリで受信するKeyStrokeディレクティブへのレスポンスを通じてのみ行われます。
KeypadControllerのサポートを宣言する場合は、ビデオスキルでサポートするキー(keys)のリストを指定します。キー値には、 UP、DOWN、LEFT、RIGHT、SELECT、PAGE_UP、PAGE_DOWN、PAGE_LEFT、PAGE_RIGHT、INFO、MOREがあります。いずれかのキーコマンドのサポートを宣言すると、すべてのキーコマンドのアクションを管理していると見なされます。つまり、一部のキーコマンドのみをサポートして、それ以外をサポートしないという宣言はできません。たとえば、UPを宣言しない場合でも、Alexaは、UP値を含んだkeystrokeペイロードを送信します。サポートされていないUP機能を補うために、デフォルトのアプリ内音声ナビゲーションおよび選択機能が働くことはありません。

