即使类别为AVAudioSessionCategoryPlayback,AVAudioPlayer也会停止在屏幕锁定上播放

时间:2011-11-10 19:17:21

标签: iphone screen avaudioplayer

我的应用使用AVAudioPlayer播放音频播放列表。我没有更改iOS4.3和iOS5之间的代码。但是,即使我将类别设置为AVAudioSessionCategoryPlayback,iOS5上的音频也会暂停屏幕锁定。

我在iOS4.3和iOS5设备上测试了代码,iOS5设备上出现了这个问题。

还有其他人遇到过这个问题吗?我不知所措,因为我甚至不知道从哪里开始调试这个问题。我的调试开始并以检查AVAudioSessionCategory设置结束。

我正在执行的代码是:

[[AVAudioSession sharedInstance] setDelegate: self];
NSError *setCategoryError = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryError];

编辑:

我已经实施并处理了audioPlayerBeginInterruption

编辑#2:解决了!感谢Rhythmic Fistman's Answer

这是发生了什么以及我做了什么。即使屏幕被锁定,iOS5也会立即将您的应用推向后台。这意味着您需要在应用中启用背景音频,并使处理该音频的任何视图/视图控制器成为第一响应者。

第1步: Enable background audio in your app

第2步: Enable remote events and become the first responder on the viewcontroller / view responsible for handling your audio playlist

注意: 确保在设备上进行测试。模拟器会使代码看起来不起作用。

2 个答案:

答案 0 :(得分:12)

Screenlock在iOS5中已更改,它现在将您的应用程序发送到后台,因此如果您希望继续播放音频,则必须将“audio”作为UIBackGroundModes添加到Info.plist文件中。

我能找到的最接近文件的是一些 Apple devforum posts(需要登录)。

答案 1 :(得分:1)

我对音频不是很习惯,但是你看过中断吗?我已经阅读了一些内容(在我的记忆中)说,当中断发生时音频可以被停止,而你的工作就是让它重新播放。

但这只是我记忆中的一些东西。这有帮助吗?