Vega频道集成
要将Vega频道集成到您的Fire TV应用中,您需要了解以下事项。Vega频道接口提供与模式无关的API,用于播放线性电视内容。这可以通过遥控器(Fire TV EPG/启动器)、触摸、语音(例如对支持Alexa的设备说:“Alexa,收看......”)或者投射来完成。
先决条件
- 访问您的Fire TV应用的源代码。
- 支持此集成的Fire TV设备。请咨询您的亚马逊联系人,获取当前支持的设备类型列表。
- 与Vega电子节目指南 (EPG) 提供方集成。
集成步骤
步骤1: 在应用中包含必要的程序包依赖项
在package.json文件中添加以下依赖项。
"dependencies": {
"@amazon-devices/kepler-channel": "^1.1.0",
}
kepler-channel程序包中包含了适用于Vega频道接口的API,供您在应用中实现。
步骤2: 更新您的清单文件
更新manifest.toml文件,加入对Vega频道的支持。请参阅以下Vega示例应用。
[components]
## 定义应用的交互组件(如果尚不存在)
[[components.interactive]]
id = "<程序包ID>.main"
runtime-module = "/com.amazon.kepler.keplerscript.runtime.loader_2@IKeplerScript_2_0"
launch-type = "singleton"
categories = ["com.amazon.category.main", "com.amazon.category.kepler.media"]
[[extras]]
## “interface.provider”指定一个组件,
## 该组件提供特定接口的实现
key = "interface.provider"
## 声明提供接口实现的组件。
## 此组件必须在 [[components.interactive]] 下定义并
## 在其类别中的包含“com.amazon.category.kepler.media”。
component-id="<程序包ID>.main"
[extras.value.application]
## 声明支持Vega频道
[[extras.value.application.interface]]
interface_name = "com.amazon.kepler.media.IChannelServer"
features = ["ChannelList"]
有关为主要交互组件添加的两个类别的详细信息:
com.amazon.category.main将组件声明为应用程序包的默认交互式组件。com.amazon.category.kepler.media将组件声明为Vega媒体操作的目标。
有关更多信息,请参阅清单 [components] 部分。
清单文件声明支持com.amazon.kepler.media.IChannelServer接口。为“interface.provider”定义的组件<程序包ID>.main处理所有频道命令回调。有关更多信息,请参阅步骤3和4。
正确的接口定义示例
清单中的每个接口定义都必须是单独且独立的。不要混合来自不同接口的属性。以下是定义多个接口的正确方法示例。
[extras.value.application]
## IChannelServer接口
[[extras.value.application.interface]]
interface_name = "com.amazon.kepler.media.IChannelServer"
features = ["ChannelList"]
## IContentLauncherServer接口
[[extras.value.application.interface]]
interface_name = "com.amazon.kepler.media.IContentLauncherServer"
attribute_options = ["partner-id"]
[extras.value.application.interface.static_values]
partner-id = "<合作伙伴ID>"
接口定义不正确的示例
下面是一种不正确的方式。请不要这样做。
[extras.value.application]
[[extras.value.application.interface]]
interface_name = "com.amazon.kepler.media.IContentLauncherServer"
attribute_options = ["partner-id"]
[[extras.value.application.interface]]
interface_name = "com.amazon.kepler.media.IChannelServer"
features = ["ChannelList"]
[extras.value.application.interface.static_values]
partner-id = "<合作伙伴ID>"
步骤3: 为Vega频道接口创建处理程序对象
创建包含Vega频道接口实现的处理程序:
import {
ChannelServerComponent2,
ChangeChannelStatus,
IChannelHandler,
IChangeChannelResponse,
OperationError,
} from '@amazon-devices/kepler-channel';
/**
* 实现Vega频道接口的处理程序
*/
const channelTunerHandler: IChannelHandler = {
async handleChangeChannel(
channelIdentifier: string,
): Promise<IChangeChannelResponse> {
/**
* 此处${channelIdentifier}的值将包含
* 来自Vega EPG提供方的ChannelDescriptor.Identifier字段的数据
*(如果在EPG引入期间提供了该字段)。
*/
// 在此处添加调谐到${channelIdentifier}所需的业务逻辑。
const response = ChannelServerComponent2.makeChannelResponseBuilder()
.status(ChangeChannelStatus.SUCCESS)
.build();
return Promise.resolve(response);
},
/**
* 不应使用handleChangeChannelByNumber,而是应改为实现和使用handleChangeChannel
*/
async handleChangeChannelByNumber(
majorNumber: number,
minorNumber: number,
): Promise<IChangeChannelResponse> {
throw new OperationError(
'不应使用handleChangeChannelByNumber,而是应改为实现和使用handleChangeChannel',
);
},
async handleSkipChannel(
channelCount: number,
): Promise<IChangeChannelResponse> {
// 添加处理跳过频道所需的业务逻辑
const response = ChannelServerComponent2.makeChannelResponseBuilder()
.status(ChangeChannelStatus.SUCCESS)
.build();
return Promise.resolve(response);
},
};
步骤4: 将处理程序对象提供给ChannelServer,以便可以引用它
在交互组件中添加类似如下所示的代码:
// 使用内容库中最新的ChannelServerComponent2
import { ChannelServerComponent2 } from '@amazon-devices/kepler-channel';
import {
IComponentInstance,
IKeplerAppStateManager,
useKeplerAppStateManager,
} from '@amazon-devices/react-native-kepler';
const keplerAppStateManager: IKeplerAppStateManager = useKeplerAppStateManager();
// 获取组件实例
const componentInstance: IComponentInstance = keplerAppStateManager.getComponentInstance();
React.useEffect(() => {
// 向频道服务器提供给定组件实例的处理程序。
ChannelServerComponent2.getOrMakeServer().setHandlerForComponent(channelTunerHandler, componentInstance);
}, []);
很好! 您已经完成Vega频道的集成,它应该可以接收命令了。
相关主题
Last updated: 2025年9月30日

