我制作了一个流式音乐播放器,它在前台工作正常。
但在后台iOS4中,它不会自动播放下一首歌曲。 (遥控器工程)
原因是AudioQueueStart return -12985
。
我已经检查了音频会话。它很好。我开始播放音乐时使用AudioQueueStart
。
如何删除AudioQueueStart
?
- (void)play
{
[self setupAudioQueueBuffers]; // calcluate the size to use for each audio queue buffer, and calculate the // number of packets to read into each buffer
OSStatus status = AudioQueueStart(self.queueObject, NULL);
}
我在网上看到有关AudioQueueStart
失败主题的答案。
要检查的一件事是AudioSession首先处于活动状态。 在我的情况下,我之前在开始播放新歌之前将歌曲更改设置为无效:
AudioSessionSetActive(false);
一旦我删除了这个AudioQueueStart就可以在后台运行。
答案 0 :(得分:3)
根据我的经验,发生-12985消息是因为当您尝试在应用中开始播放时,另一个应用已经激活了音频会话。选项是1)指示用户关闭其他应用程序,或2)设置混合模式(请参阅kAudioSessionProperty_OverrideCategoryMixWithOthers)。
混音模式的缺点是,如果您依赖于锁屏艺术或遥控器,它们将无法与混音模式设置一起使用。
答案 1 :(得分:2)
我一周前也遇到过这样的问题。我花了两天时间找到解决方案并找到了解决方案。可能是这个链接会有所帮助(这是官方答复):http://developer.apple.com/library/ios/#qa/qa1668/_index.html
确保从applicationDidEnterBackground任务处理程序激活会话。现在我的应用程序可以在后台播放声音。
答案 2 :(得分:1)
请参阅this。
您可能需要包含以下内容:
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
在底部重申该线的重要性。由于在三个主要音频音频指南(AVFoundation,AudioSession或AudioQueue)中没有提到它,因此很容易被遗漏。
答案 3 :(得分:0)
我有同样的问题。 我注册了AudioSessionInterruptionListener,在电话呼叫时暂停音频,在通话结束后恢复音频。但是在调用AudioQueueStart恢复时会得到-12985错误代码。 我的解决方案是我尝试在0.02秒后调用AudioQueueStart。 我不知道原因。
答案 4 :(得分:0)
在iOS7上,AudioQueueStart正在返回'!int' (' tni!')虽然我确信没有人会发现它没有记录在文档或标题中。但是,这是同一个问题,并且相同的修复(将音频会话设置为在后台任务处理程序中处于活动状态)对我有效。