开发者控制台

步骤5: 报告应用的静态功能(VSK Fire TV)

步骤5: 报告应用的静态功能(VSK Fire TV)

通过静态功能集成,所有内容均可免费搜索和播放,无需用户身份验证。因此,无需根据用户登录状态动态报告您的功能,您可以直接在应用清单中指明您应用的功能。VSK Agent将自动检测清单中提及的那些功能。

示例应用注意事项

示例应用已报告静态功能,因此您无需在该步骤中进行任何编码。在示例应用中,有关如何声明静态功能的详细信息,请参阅AndroidManifest.xmlraw/static_capabilities文件。

声明静态功能

VSK Agent是Fire TV上的设备端路由代理,其向您的应用发送VSK指令(通过意图)。VSK Agent会扫描您应用的AndroidManifest.xml以确定您的应用支持哪些静态功能。按如下方式声明您应用的静态功能:

  1. 打开AndroidManifest.xml文件并在application元素中添加以下资源。

    <meta-data android:name="com.amazon.alexa.vsk_app_agent_api.capabilities" android:resource="@raw/static_capabilities" />
    
  2. 上面的代码引用了@raw/static_capabilities上的资源,该资源列出了有关您的应用支持的功能的详细信息。在项目的app/res/raw中添加此文件(名为static_capabilities - 无文件扩展名)。

    static_capabilities文件列出了您的应用始终支持的功能。VSK Agent将在安装应用或更新应用时扫描此文件。这意味着用户在首次使用您的应用时无需打开即可通过语音控制它。

    示例应用注意事项

    示例应用还显示了raw文件夹中的其他功能文件。您可以忽略此类其他功能文件,因为它们仅用于动态功能集成
  3. static_capabilities文件中,列出了您的应用支持的功能。

    static_capabilities的内容必须是包含单个capabilities数组的JSON对象,数组中的每个对象都列出了不同的功能。有关您可以在JSON文件中添加的所有可能支持的功能的列表,请参阅仅限应用的集成支持的功能

    例如,要声明支持RemoteVideoPlayer功能,包括此接口发送的SearchAndPlaySearchAndDisplayResults指令,请将以下代码添加到您的static_capabilities文件中:

    {
      "capabilities": [
        {
          "type": "AlexaInterface",
          "interface": "Alexa.RemoteVideoPlayer",
          "version": "3.1",
          "configurations": {
            "operations": [
              "SearchAndDisplayResults",
              "SearchAndPlay"
            ],
            "catalogs": [
              {
                "type": "VIDEO_INGESTION_IDENTIFIER",
                "sourceId": "<INSERT PARTNER ID>"
              }]
          }
        }
      ]
    }
    

    要声明同时支持RemoteVideoPlayerPlaybackController(不推荐),请将功能作为另一个对象添加到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指令。

    请注意,如果您在static_capabilities文件中指定了这样的功能,则您的应用必须能够处理这些指令。如果您的应用不支持这些指令,请不要在此处列出这些功能。Alexa仅向您发送您的应用声明其支持的指令。例如,如果您声明了PlaybackController,您将得到此接口需要您处理的指令,如果您没有声明,则不会获得这些指令。

    示例应用注意事项

    有关示例,请参阅示例应用中的static_capabilities文件(在app/res/raw中)。在示例应用中,同时支持SearchAndPlaySearchAndDisplayResults操作(它们是RemoteVideoPlayer接口的一部分),并支持PlayPauseStop操作(属于PlaybackController接口的一部分)。指定的目录是ontv;但是,用于此示例应用的实际目录是通过com.example.vskfiretv程序包前缀和IMDb目录的特殊后端映射来处理的 - 无论您在示例应用中为目录名称使用什么值(例如ontv或其他值)。
  4. catalogs属性中,使用您的合作伙伴ID更新sourceId的值。

    您的合作伙伴ID与您在目录与Fire TV启动程序集成期间向Fire TV启动程序报告的值相同(请参阅通用搜索和浏览)。它也是CDF文件(您在目录集成期间提交的文件)中的Partner(合作伙伴)字段。 如果您需要,您的亚马逊代表可以提供此ID。有关catalogs属性的更多详细信息,请参阅“支持的功能”中的RemoteVideoPlayer功能部分。

后续步骤

转到下一步: 步骤6: 报告应用的动态功能