iphone - 检测 AVAudioSession 何时为 "Ducked"

标签 iphone ios avplayer avaudiosession

我正在开发 Podcast 应用程序。这使用 AVAudioSessionCategoryPlayback session 类型播放音频。这几乎完成了我想让它做的所有事情。它会暂停其他正在播放的音乐,当有来电时它会被打断,并且通常完全按照我的意愿工作。

一个异常(exception)。当播放更高优先级的音频时(例如,在运行逐向导航应用程序时),我的应用程序中的音频音量会降低但会继续运行。这会造成不希望出现的两种声音的可怕混合。相反,我更希望我的应用程序中的音频在过度播放的声音期间暂停,然后在播放结束后再次继续。

我已经尝试更改不同的 AVAudioSession 属性,例如 AVAudioSessionCategoryOptionMixWithOthers,但这些只会更改低优先级声音与我的应用程序混合的方式。它们不会改变我的声音与更高优先级声音的混合方式。我还尝试观察 sharedSessionotherAudioPlaying 属性,但是当我覆盖这些短片时,这并没有触发更改。

有没有什么方法可以检测我的应用程序中的音频何时被闪避,以便我可以暂停它?或者防止我的应用程序的音频被回避,以便它将这些其他声音视为中断?

谢谢。

最佳答案

此功能是在 iOS 9 中添加的,可以通过将 Audio Session 模式设置为 AVAudioSessionModeSpokenAudio 来启用。其他会说话的应用程序(例如导航应用程序)会中断您的音频而不是闪避。

参见:https://developer.apple.com/documentation/avfoundation/avaudiosessionmodespokenaudio

关于iphone - 检测 AVAudioSession 何时为 "Ducked",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18083388/

相关文章:

ios - 无法在iOS Swift中使用类型为json的参数列表调用append

iphone - 用于将整数添加到nsmuatablearray FMDB/EGODB的编译器指令防御性编程

ios - 如何在 iOS 中设置隐藏整个应用程序的状态栏?

ios - 突然无法连接到我的 Firebase 数据库

ios - 使用 RxSwift 从后台进入前台时 AVPlayer 自动播放

ios - 为什么 AVPlayerItem 的 canPlayFastForward 方法返回 False?

iphone - 如何使用加速度计检测 iPhone 在太空中的运动?

ios - 图像在屏幕上水平滑动时循环播放,看起来像是在无限滚动

带有 UIImage 的 IOS CollectionView 从 url 加载

iOS 使用基于 Cookie 的身份验证从服务器流式传输音频