步骤5: 报告应用的静态功能(VSK Fire TV)
通过静态功能集成,所有内容均可免费搜索和播放,无需用户身份验证。因此,无需根据用户登录状态动态报告您的功能,您可以直接在应用清单中指明您应用的功能。VSK Agent将自动检测清单中提及的那些功能。
示例应用已报告静态功能,因此您无需在该步骤中进行任何编码。在示例应用中,有关如何声明静态功能的详细信息,请参阅
AndroidManifest.xml
和raw/static_capabilities
文件。声明静态功能
VSK Agent是Fire TV上的设备端路由代理,其向您的应用发送VSK指令(通过意图)。VSK Agent会扫描您应用的AndroidManifest.xml
以确定您的应用支持哪些静态功能。按如下方式声明您应用的静态功能:
-
打开
AndroidManifest.xml
文件并在application
元素中添加以下资源。<meta-data android:name="com.amazon.alexa.vsk_app_agent_api.capabilities" android:resource="@raw/static_capabilities" />
-
上面的代码引用了
@raw/static_capabilities
上的资源,该资源列出了有关您的应用支持的功能的详细信息。在项目的app/res/raw
中添加此文件(名为static_capabilities
- 无文件扩展名)。此
static_capabilities
文件列出了您的应用始终支持的功能。VSK Agent将在安装应用或更新应用时扫描此文件。这意味着用户在首次使用您的应用时无需打开即可通过语音控制它。 -
在
static_capabilities
文件中,列出了您的应用支持的功能。static_capabilities
的内容必须是包含单个capabilities
数组的JSON对象,数组中的每个对象都列出了不同的功能。有关您可以在JSON文件中添加的所有可能支持的功能的列表,请参阅仅限应用的集成支持的功能。例如,要声明支持
RemoteVideoPlayer
功能,包括此接口发送的SearchAndPlay
和SearchAndDisplayResults
指令,请将以下代码添加到您的static_capabilities
文件中:{ "capabilities": [ { "type": "AlexaInterface", "interface": "Alexa.RemoteVideoPlayer", "version": "3.1", "configurations": { "operations": [ "SearchAndDisplayResults", "SearchAndPlay" ], "catalogs": [ { "type": "VIDEO_INGESTION_IDENTIFIER", "sourceId": "<INSERT PARTNER ID>" }] } } ] }
要声明同时支持
RemoteVideoPlayer
和PlaybackController
(不推荐),请将功能作为另一个对象添加到capabilities
数组中:{ "capabilities": [ { "type": "AlexaInterface", "interface": "Alexa.PlaybackController", "version": "3", "supportedOperations" : ["Play", "Pause", "Stop"] }, { "type": "AlexaInterface", "interface": "Alexa.RemoteVideoPlayer", "version": "3.1", "configurations": { "operations": [ "SearchAndPlay", "SearchAndDisplayResults" ], "catalogs": [ { "type": "VIDEO_INGESTION_IDENTIFIER", "sourceId": "<INSERT PARTNER ID>" }] } } ] }
在上面的代码中,应用现在也支持来自
Alexa.PlaybackController
的Play、Pause和Stop指令。警告: 尽管您可以声明支持PlaybackController
和其他接口,例如SeekController
、ChannelController
和KeypadController
,但不建议使用此类其他接口。只建议使用RemoteVideoPlayer
(特别是SearchAndPlay
和SearchAndDisplayResults
指令)进行Fire TV VSK集成。(对于Fire TV以外的其他类型的集成,建议使用其他接口。)请注意,如果您在
static_capabilities
文件中指定了这样的功能,则您的应用必须能够处理这些指令。如果您的应用不支持这些指令,请不要在此处列出这些功能。Alexa仅向您发送您的应用声明其支持的指令。例如,如果您声明了PlaybackController
,您将得到此接口需要您处理的指令,如果您没有声明,则不会获得这些指令。示例应用注意事项
有关示例,请参阅示例应用中的static_capabilities
文件(在app/res/raw
中)。在示例应用中,同时支持SearchAndPlay
和SearchAndDisplayResults
操作(它们是RemoteVideoPlayer
接口的一部分),并支持Play
、Pause
、Stop
操作(属于PlaybackController
接口的一部分)。指定的目录是ontv
;但是,用于此示例应用的实际目录是通过com.example.vskfiretv
程序包前缀和IMDb目录的特殊后端映射来处理的 - 无论您在示例应用中为目录名称使用什么值(例如ontv
或其他值)。 -
在
catalogs
属性中,使用您的合作伙伴
ID更新sourceId
的值。您的合作伙伴ID与您在目录与Fire TV启动程序集成期间向Fire TV启动程序报告的值相同(请参阅通用搜索和浏览)。它也是CDF文件(您在目录集成期间提交的文件)中的
Partner
(合作伙伴)字段。 如果您需要,您的亚马逊代表可以提供此ID。有关catalogs
属性的更多详细信息,请参阅“支持的功能”中的RemoteVideoPlayer功能部分。
后续步骤
转到下一步: 步骤6: 报告应用的动态功能。