开发人员控制台

管理音频焦点


管理音频焦点

播放音频的应用必须仔细设计,以便通过简单易用的方式与其他应用和服务配合使用。为了管理跨应用的音频播放,Android提出了音频焦点的概念。本文档概述了如何在Fire TV上管理音频焦点和其他相关事件。

音频焦点的复杂性

不要低估处理音频焦点的复杂性。除其他主题外,在开发应用时,还请考虑以下事项:

  • 您的应用设计为在前台还是后台播放音频
  • 如何通知其他应用应停止播放
  • 当其他应用开始播放时,您的应用如何反应
  • 您的应用如何以及何时处理传入的多媒体事件(例如暂停、快进等)
  • 如何处理系统通知和其他短时间音频中断
  • 语音搜索如何中断您的应用
  • 语音控制解决方案如何与您的应用交互
  • 何时允许您的应用持有资源和唤醒锁

请注意,对视频播放应用的预期可能与对纯音频应用的预期截然不同。

多媒体应用文档

请按照包含API级别22(Fire OS 5)、API级别25(Fire OS 6)和API级别28(Fire OS 7)说明的相关Android开发者页面进行操作。此外,请按照Android文档中的指南和说明操作:

处理音频焦点

开发应用时,请遵循音频焦点事件要求中描述的所有要求。请注意以下事项:

  • 播放的持续时间必须与保持音频焦点以及将MediaSession设置为有效的持续时间完全匹配。这也意味着您必须在完成播放后立即放弃焦点请求。
  • 所有音频焦点更改回调都必须按照Android 8.0之前的音频焦点中的描述进行处理。
  • 当应用在后台播放时,它必须处理多媒体事件(持续处理,同时还具有音频焦点)。
  • 接收任何类型的音频焦点丢失事件应导致应用停止处理多媒体事件,直到重新获得焦点。
  • 永久失去焦点意味着您的应用不会再次获得焦点;它应释放所有资源。
  • 不要在未放弃之前请求的情况下,多次请求音频焦点(以避免多次在焦点堆栈中注册)。
  • 放弃音量应设置为不会干扰其他应用或语音搜索响应的级别,例如,将音量设置为原始音量的30-40%。

语音互动

当用户按遥控器上的麦克风按钮(“近场”),或者当带有麦克风的设备识别设备的唤醒字(“远场”)时,系统范围的语音功能将启动,并且无法覆盖。将发送音频焦点事件(AUDIOFOCUS_LOSS_TRANSIENT)和活动生命周期事件(onPause())。

一般来说,您的应用应该暂停(或至少将音频静音)以响应语音交互。您的应用应该做好准备,以便按照Android允许的任何顺序接收事件。除其他选项外,用户还可以指示Alexa启动新的应用,例如,用户可以打开或关闭音响系统。因此,当播放暂停时,音频功能可能会发生变化。在继续播放之前,您应该正确地对所有这些更改作出反应。

正确实现MediaSession接口的应用可以通过语音命令进行控制。有关如何启用语音控制的详细信息,请参阅对您的应用和内容启用语音功能。Fire TV上的语音搜索也可以在搜索结果中包含应用中的内容。有关此功能,请参阅将您的目录与Fire TV集成