- 客户端:适用于Android或iOS的面向用户的手机应用。通过将您的手机应用设为Matter客户端,用户可以发现诸如Fire TV之类的投屏目标。用户还可以投射内容,以及控制投屏会话。
- 内容应用:您的运行于Vega上的Fire TV设备中面向用户的应用程序。通过将您的Vega应用设置为Matter内容应用,客户端可以对其进行控制。例如,客户端可以启动特定内容的播放。
步骤1:将Matter投屏SDK集成到您的客户端应用中
Vega平台上的Matter Casting客户端(手机端应用)集成流程与Fire OS完全一致。你的安卓或iOS手机应用程序需使用Matter Casting SDK来执行发现播放器、建立连接和发送命令等操作。 无需对手机应用程序进行任何更改即可支持Vega设备上的Matter Casting。有关将Matter Casting SDK集成到您的客户端应用程序(包括构建和设置、调试和设备认证)的完整详细信息,请参阅Fire OS Matter Casting集成指南中的第 1 步。步骤2:将Matter Casting集成到Vega应用程序
在Vega上,内容应用程序集成在概念上与Fire OS类似,但使用不同的API。您的Vega应用程序将与Vega平台集成,无需直接使用AIDL文件、Matter代理客户端和BroadcastReceivers等Matter协议组件。
Vega Platform提供了一套不受模式限制的API,它们划分非不同集群,每个集群都是一组关联的指令与属性的集合。您的内容应用程序注册为其支持的集群的提供商,Vega Matter Casting服务则负责处理您的提供商应用程序和客户端手机应用程序之间的通信。
架构概述
在Vega OS上,Vega平台Matter Casting服务负责处理 Matter 协议层,在手机应用程序和Vega内容应用程序之间完成双向转译。
这种架构的主要优势在于,您的内容应用程序永远不会直接与Matter协议进行交互。您只需实现标准的Vega平台集群处理程序,Vega平台的Matter Casting服务就会完成所有协议转译工作。
Matter集群与Vega平台集群的映射关系
Matter投屏定义了多个功能集群,Fire OS和Vega架构中都包含部分由系统直接托管的集群,内容应用无需做任何额外开发。在Vega平台中,部分Matter集群会映射为Vega平台集群,需要你的内容应用自行实现。系统处理的集群
内容应用程序无需执行任何操作,即可实现此类集群的代码。内容应用程序集群
您的Vega内容应用程序通过注册为提供商的方式来实现这些集群。1.更新您的应用清单
必须更新您的Vega应用程序的manifest.toml文件,以声明对Matter Casting的支持,以及您应用程序所提供的Vega平台集群。Vega中的这一操作相当于Fire OS中的更新AndroidManifest.xml。Matter Casting配置
添加[offers.matter-casting]部分,以声明您应用程序的Matter Casting身份。供应商ID和商品编码必须与您的设备认证证书(DAC)中的对应值相匹配。有关更多信息,请参阅应用认证。
在开发阶段,您可以使用以下示例值。此部分位于清单的[offers]区域。
完整清单示例
以下示例展示了支持内容启动器、媒体控制、账户登录和目标导航集群的Matter Casting的Vega内容应用程序的完整manifest.toml。将com.amazondeveloper.media.sample替换为您应用的程序包ID。关于清单的要点:
[offers.matter-casting]部分声明了您的应用程序的Matter Casting服务的Matter身份(供应商 ID、产品 ID 和供应商名称)。[[extras]]部分(其key = "interface.provider")说明了您应用支持哪些Vega平台集群。这就像Fire OS中名为static_matter_clusters的JSON文件一样。- 在主要交互组件中,
categories字段必须包含"com.amazon.category.kepler.media"。 - 账号登录集群利用
override_attribute_component属性将状态查询请求路由至一个无头的服务组件,这使得系统能够在不唤醒整个应用程序用户界面的情况下查询登录状态。 - 媒体控制集群中的
command_options和features字段用于表明应用程序所支持的可选指令与功能特性。请根据您的应用程序的功能,调整这些设置。
2.添加程序包依赖项
将以下依赖项添加到您支持的Vega平台集群的package.json文件中。3.实现内容启动器集群
内容启动器集群对应Matter Content Launcher集群,其核心作用是让手机端应用能够直接启动您Vega应用内的指定内容。 当手机应用程序发送Matter Content Launcher命令时,Matter Casting服务会将其转换为Vega平台内容启动器调用。您的应用程序通过IContentLauncherHandler接口接收该请求,具体是通过handleLaunchContent回调来处理。 该回调将接收以下参数:contentSearch—描述用户想要观看或搜索的内容,包括包含实体类型、值和外部ID的参数列表。autoPlay—如为true,则直接播放内容(快速播放)。如为false,则显示搜索结果。optionalFields—其他可选参数。
handleLaunchContent实现中的响应规范。
4.实现媒体控制集群
媒体控制集群对应Matter Media Playback集群。它使手机应用能够控制你Vega应用中的媒体播放行为,包括播放、暂停、停止、定位、快进、快退、上一曲、下一曲等操作。 当手机应用程序发送Matter Media Playback命令时,Matter Casting服务会将其转译为Vega平台的Media Controls呼叫。您的应用程序通过IMediaControlHandlerAsync接口接收此信息,包括handlePlay、handlePause、handleStop、handleSeek等等。
您的应用程序需维护一个MediaSessionState对象,用于描述当前播放状态、功能和支持的控制选项。当播放状态发生变化时,您可以通过Vega平台API updateMediaSessionStates()予以报回。然后,Matter Casting服务将这些状态更新转换为手机应用程序可以订阅的Matter属性报告。
关键概念:
- 提供商注册:您的应用程序使用
MediaControlServerComponentAsync.getOrMakeServer()和setHandlerForComponent()注册器处理程序。 - 会话状态:维护包括播放状态、位置、速度、功能和支持操作的
MediaSessionState对象。 - 多个会话:媒体控件支持画中画等功能的多个会话。
MediaPlayState和MediaControlHandler。
接下来,即可在MediaControlHandlerAsync中添加以下内容,以添加Matter Media Playback集群所需的支持。每个处理程序都返回一个。提供商必须解析或拒绝每次处理程序调用的返回Promise。Matter Casting服务强制执行25秒的命令超时,因此提供商必须在20秒内解析承诺,以留出足够开销时间用于传输和处理。如果在25秒内未收到任何响应,则您的手机应用程序将收到超时错误。
5.部署账户登录集群
账户登录集群对应于 Matter Account Login cluster。在Matter Casting中,该集群有两个用途:- 配对接码流程:在初始配对接码流程中,播放器可以在您的内容应用程序上调用
GetSetupPIN命令来获取配对接码。如此,无需用户手动输入代码,播放器即可完成客户端的配网。GetSetupPIN命令包含一个TempAccountIdentifier参数(即旋转ID),该参数由客户端通过UDC消息传递。内容应用程序通常利用其自有云服务来匹配此配对接码。 - 登录状态报告:您的应用程序需向系统报告其身份验证状态(
SIGNED_IN或SIGNED_OUT)。Fire TV 用户界面根据该状态显示合适的观看选项(例如 “立即观看” 或 “订阅”),以及在Matter Casting期间确定客户端的内容访问权限。
- 在manifest.toml中声明该无头服务组件。
- 设置
override_attribute_component,将状态查询请求路由至该无头服务组件。 - 使用
@amazon-devices/headless-task-manager注册的无头入口点。 - 永久存储方案(例如
AsyncStorage),用于在交互组件和服务组件之间共享登录状态。
AccountLoginWrapper和service.js。
接下来,便可在AccountLoginWrapper中添加以下内容,以添加对Matter账户登录集群的支持。每个处理程序都返回一个 Promise(handleGetSetupPin未Promise<string>;handleLogin和handleLogout则为Promise<void>)。提供商必须解析或拒绝每次处理程序调用的返回promise。Matter Casting服务强制执行25秒的命令超时,因此提供商必须在20秒内解析承诺,以留出足够开销时间用于传输和处理。如果在25秒内未收到任何响应,则手机应用程序将收到超时错误。
6.实现目标导航集群
目标导航集群对应于Matter Target Navigator集群。它提供了一个接口,用于在应用程序中不同播放目标之间导航,例如切换不同屏幕界面、内容分类或输出端点。 应用程序需注册一个处理程序来接收目标导航请求。当手机应用程序发送Matter Target Navigator命令时,Matter Casting服务会将其转移为Vega平台的Target Navigator调用。处理程序会收到一个StandardTargetIdentifier1对象,其中包含要导航至的目标标识符。
关键概念:
- 目标发现:您的应用程序需对外公开可用的导航目标及其元数据,包括唯一的标识符和人类可读的名称。
- 目标选择:您的处理程序负责接收并处理导航请求,随后切换至指定的目标界面或端点。
7.报告属性变化
Matter Casting的一个关键环节,是确保手机应用程序可以随时了解内容应用程序的当前状态。当内容应用程序的状态发生变化时,您必须通过Vega Platform API将这些更改上报。状态变化示例包括:播放开始、暂停或用户登录。Vega Matter Casting Service在内部将这些状态变化转译为Matter属性报告,由手机应用程序通过订阅接收。 每个集群都有自己的报告属性变更的机制。
媒体控制
8.按需安装您的Vega应用程序
如果用户尚未安装您的内容应用程序,但尝试投屏至该应用程序,则系统应提示用户安装该应用程序。此操作利用应用程序启动器集群在系统层面进行处理。手机应用程序在启动应用程序集群有效载荷的ApplicationID中提供软件包名称,系统会将名称与Vega App Store进行匹配,从而引导完成安装。
此客户端行为与Fire TV中完全相同,您的内容应用程序无需为这一功能进行额外的集成。这一确保manifest.toml中的应用程序包名称与Vega App Store中发布的包名称相匹配。
步骤3:与播放器交互
视频播放器的交互行为可能是发现设备、建立连接、选择端点、发出命令、读取属性或订阅事件等。这些交互均由手机应用程序使用Matter Casting SDK完成处理。无论播放器运行的是Fire OS还是Vega OS,该交互过程都是一样的。 有关发现、连接至播放器,以及选择终端和通过手机与内容应用程序进行交互的完整详细信息,请参阅Fire OS Matter Casting集成指南中的第3步。相关主题
- Matter Casting概述(Fire OS)
- Matter Casting集成(Fire OS)
- 应用程序认证(Fire OS)
- 为Vega开发
- 内容启动器集成指南
- 开始使用Vega媒体控制
- Vega目标导航器提供方API

