如何捕获在iOS 10

时间:2016-10-11 10:45:34

标签: ios audio ios10

这是我的场景:我有一个视频播放器播放一些视频/音频,并且突然因为我之前设置了警报。

iOS 10之前,闹钟的UI和音频将阻止主UI线程,以便通过观察UIWindowDidResignKeyNotification来捕获警报事件。

但是在iOS 10上,似乎警报UI的行为与Notification messages类似,并且不会阻止主UI。

但是它的警报声会接管音频线程,结果是视频图像正在播放而视频声音没有播放,而是播放了警报声。

使用iOS 10我所做的是观察AVAudioSessionInterruptionNotification,这会在闹钟播放时发布,一旦我得到它,我就暂停播放视频。

但是这会导致另一个问题,即我的用户在解除警报后必须再次手动点击play按钮,这不太好。

当触发任何其他类型的系统音频时会发布

Plus AVAudioSessionInterruptionNotification,例如iMessagePush Notification这些音频非常短的消息,并且会导致暂停用户陷入困境。

所以我想知道是否有办法监听用户上下移动警报UI的事件。

或者,如果有人能提出其他解决方案来解决这类问题。

更新:

只有在硬件解码视频时才会出现alarm sound takes over the audio thread问题。

如果它是视频的默认系统解码,那么它就可以了。

如果拨打来电并且呼叫声也会接管音频线程,这很好,因为来电会阻止主用户界面,所以我也可以通过观察UIWindowDidResignKeyNotification来管理它。

1 个答案:

答案 0 :(得分:0)

好吧,我的错,我没有读过苹果文档,一切都是here

您可以在AVAudioSessionInterruptionNotification中使用userInfo。

它给出了枚举,当它开始时,它何时结束,甚至是它恢复的最佳时机。