【发布时间】:2013-08-06 14:45:23
【问题描述】:
我正在开发一个 Podcast 应用程序。这使用AVAudioSessionCategoryPlayback 会话类型播放音频。这几乎可以完成我想要它做的所有事情。它会暂停其他播放音乐,当有来电时它会被打断,并且通常完全按照我的意愿工作。
有一个例外。当播放更高优先级的音频时(例如,运行逐向导航应用程序时),我的应用程序中的音频音量会降低,但会继续运行。这造成了两种不想要的声音的可怕混合。相反,我希望我的应用程序中的音频在过度播放的声音期间暂停,然后在完成后再次继续。
我已尝试更改不同的 AVAudioSession 属性,例如 AVAudioSessionCategoryOptionMixWithOthers,但这些只会更改较低优先级的声音与我的应用程序混合的方式。它们不会改变我的声音与更高优先级声音的混合方式。我还尝试观察 sharedSession 的 otherAudioPlaying 属性,但是当我覆盖这些短片时,这并没有触发更改。
有什么方法可以检测到我的应用程序中的音频何时被闪避,以便我可以暂停它?或者是为了防止我的应用程序的音频被闪避,以便它将这些其他声音视为中断?
谢谢。
【问题讨论】:
-
你试过使用
kAudioSessionBeginInterruption和kAudioSessionEndInterruption吗? -
是的,但就 AVAudioSession 而言,覆盖闪避不算作“中断”。所以这些回调/通知不会被触发。
-
如果您认为应该这样做,您可能需要向 Apple 提交一份雷达报告。在我看来,应该将其视为音频会话中断似乎是合乎逻辑的。
-
你找到解决这个问题的方法了吗?我也有同样的问题……如果有,请告诉我。
-
问题可能是一旦您收到闪避通知并停止声音,您的应用程序就会停止并且您无法观察到未闪避通知。该系统需要对此的明确支持,并且由于它们似乎没有,我认为目前没有办法做到这一点。我发起了一个支持事件来获得 Apple 的答复。
标签: iphone ios avplayer avaudiosession