音频焦点改进

使用音频焦点的媒体或游戏应用在失去焦点后不应播放音频。从 Android 12 开始,框架强制执行此行为。当一个应用在另一个应用具有焦点且正在播放音频的同时请求音频焦点时,框架会强制正在播放音频的应用淡出。随着淡出功能的添加,在从一个应用到另一个应用时,可以实现更流畅的过渡。

当满足以下条件时,就会出现这种淡出行为:

音频系统会淡出第一个应用。在淡出结束时,系统会通知第一个应用它已失去焦点。该应用的播放器将会保持静音,直到该应用再次请求音频焦点。

现有的音频焦点行为

您还应注意下面这些涉及切换音频焦点的其他情况。

自动降低音量

自动降低音量功能是在 Android 8 中引入的,该功能是指暂时降低一个应用的音量,以便能够清楚地听到另一个应用的声音。

通过让框架实现降低音量功能,开发者就不必在其应用中实现降低音量功能。

当音频通知从正在播放音频的应用夺取焦点时,也会出现自动降低音量的行为。通知播放的开头与降低音量坡道的结尾同步。

当满足以下条件时,就会出现自动降低音量的行为:

  • 当前正在播放音频的第一个应用必须:

  • 第二个应用使用 [AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK](/reference/android/media/AudioManager#AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) 请求音频焦点。

音频系统会降低第一个应用的所有活跃播放器的音量,同时第二个应用获得焦点。当第二个应用放弃焦点时,系统会为这些播放器取消降低音量。第一个应用在失去焦点时不会收到通知,因此它无需执行任何操作。

请注意,在听语音内容时不会执行自动降低音量的操作,因为用户可能会错过部分节目。例如,如果在提供行车路线时降低播放音量,就会发生这种情况。

将来电静音

某些应用的行为不当,在通话过程中继续播放音频。这样会迫使用户找到并静音或退出违规应用,以便听到通话的声音。此功能可确保有来电时不会有任何应用继续播放音频。当应用满足以下条件时,就会调用此功能:

  • 具有用途属性 AudioAttributes.USAGE_MEDIAAudioAttributes.USAGE_GAME
  • 已成功请求音频焦点(任何焦点增益)并且正在播放音频

如果某个应用在通话过程中继续播放,其播放会静音,直到通话结束。不过,如果某个应用在通话过程中开始播放,该播放器不会静音,因为系统认为这是用户的有意行为。