AudioQueueStart失败-12985

时间:2010-12-03 19:30:38

标签: ios4 background-process audioqueueservices audiosession

我制作了一个流式音乐播放器,它在前台工作正常。 但在后台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就可以在后台运行。

5 个答案:

答案 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!')虽然我确信没有人会发现它没有记录在文档或标题中。但是,这是同一个问题,并且相同的修复(将音频会话设置为在后台任务处理程序中处于活动状态)对我有效。