アプリのみの統合でサポートされる機能
アプリのみの統合でサポートされる機能を以下に示します。
- サポート対象の機能の概要
- 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
インターフェースのディレクティブをアプリでサポートできることを示すことができます。このインターフェースは、左右または上下へのスクロールや、フォーカスされているウィジェットの選択に使用されます。
たとえば、「アレクサ、右にスクロールして」などです。 上記のコード例に従って、ビデオスキルでサポートしているキーのリストを指定します。キー値には、
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
機能を補うために、デフォルトのアプリ内音声ナビゲーションおよび選択機能が働くことはありません。