开发者控制台

处理HDMI事件


处理HDMI事件

应用开发者负责处理所有已连接设备的功能更改和状态更改,包括关于电视、AVR和蓝牙扬声器的事件。如果无法处理这些事件,就会导致不必要的网络和CPU占用,进而超出用户的数据限制/网络提供方强制执行的限制(数据上限)。耗尽带宽还会降低连接到同一网络的其他设备的性能。如果无限连续播放,还会阻止设备进入睡眠状态,并导致无法安装重要的软件更新。

HDMI状态变化

应用收到HDMI状态变化通知可能有几种情况。例如,由于电视关闭,电视输入切换到了另一个HDMI端口,HDMI电缆在物理上断开连接,或者视频接收器上的HDMI设置进行了调整。

  • 收到HDMI断开连接事件时,应用必须暂停视频播放。如果应用正在播放直播内容(或任何无法暂停的内容),则必须返回详细信息页面并停止播放内容。收到HDMI接收器重新连接事件消息后,播放应保持暂停状态,直到用户按下遥控器上的播放按钮。
  • 即使在收到HDMI断开连接事件后,只要确认音频输出设备仍然可用(例如连接的蓝牙扬声器),仅播放音频的应用便可继续播放。

可用API

有多种方法可以侦听HDMI状态的更改。Android Marshmallow (FireOS 6)的首选方法是使用AudioDeviceCallback API。与意图相比,此类API不仅速度更快,而且能够提供更多关于状态变化的信息。

针对FireOS 5的应用仅可侦听意图ACTION_HDMI_AUDIO_PLUG,其中的额外信息EXTRA_AUDIO_PLUG_STATE会指示HDMI连接状态(插入或拔下)。

针对所有FireOS版本的应用则应根据平台的运行时API级别支持情况来决定使用哪种方案。

其他说明

智能电视可能会选择不通知已连接的Fire TV设备使用了不同的输入,甚至不通知设备电视已经关闭。这样有助于加快电视输入的切换速度。但是,在这种情况下,没有可靠的方法可以确定客户能否看到Fire TV设备的输出。

收到关于重新连接的通知后,播放编码内容的应用必须检查音频功能有没有更改。有可能在播放开始时,Fire TV连接到了支持Dolby Atmos的音频视频接收器,而HDMI电缆从该接收器上拔下之后,重新连接到了仅支持PCM的电视上。

有关更多详细信息,请查看“多媒体应用要求”页面的输出状态变化要求部分。