9

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

4

5 回答 5

3

根据我的经验,出现 -12985 消息是因为当您尝试在您的应用中开始播放时,另一个应用已经有一个音频会话处于活动状态。选项是 1) 指示用户关闭其他应用程序,或 2) 设置混合模式(请参阅 kAudioSessionProperty_OverrideCategoryMixWithOthers)。

混合模式的缺点是,如果您依赖锁屏艺术或遥控器,它们将无法与混合模式设置一起使用。

于 2012-12-10T16:28:38.283 回答
2

一周前我也遇到过这样的问题。我花了两天时间寻找解决方案,我找到了。可能这个链接会有所帮助(这是官方答案):http: //developer.apple.com/library/ios/#qa/qa1668/_index.html

确保从 applicationDidEnterBackground 任务处理程序激活会话。现在我的应用程序可以在后台播放声音。

于 2011-06-03T07:17:15.743 回答
1

看到这个

您可能需要包括以下内容:

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

在底部,重申了这条线的重要性。由于三个主要音频指南(AVFoundation、AudioSession 或 AudioQueue)中的任何一个都没有提到它,因此很容易错过它。

于 2012-09-13T23:09:57.407 回答
0

在 iOS7 上,AudioQueueStart 返回“!int”(“tni!”),但我敢肯定没有人会惊讶地发现它没有记录在文档或标题中。不过,这是同样的问题,同样的修复(在后台任务处理程序中将音频会话设置为活动状态)对我有用。

于 2013-12-29T03:57:25.537 回答
0

我也有同样的问题。我注册了AudioSessionInterruptionListener,通话时暂停音频,通话结束后恢复。但是当调用 AudioQueueStart 恢复时得到 -12985 错误代码。我的解决方案是我尝试在 0.02 秒后调用 AudioQueueStart。我不知道原因。

于 2013-09-28T16:03:34.297 回答