【发布时间】:2016-01-14 12:16:57
【问题描述】:
我的应用使用音频队列服务来播放声音。在应用启动时,我将音频会话类别设置为独奏环境:
`[[AVAudioSession sharedInstance] setCategory:AVAudioSEssionCategorySoloAmbient error:&error];`
当我的应用代理收到applicationWillResignActive 通知时,我会调用AudioQueuePause(queue); 来获取所有播放声音。当应用程序委托获得applicationDidBecomeActive 时,我调用
OSStatus status = AudioQueueStart(queue, 0);
有时(而且很难重现)status 等于 561015905。此值不属于 Audio Queue Result Codes。是AVAudioSessionErrorCodeCannotStartPlaying,文档说
“应用程序不允许开始录制和/或播放,通常是因为其 Info.plist 中缺少音频键。这也可能 如果应用具有此密钥但使用无法记录的类别,则会发生这种情况
和/或在后台播放 (AVAudioSessionCategoryAmbient, AVAudioSessionCategorySoloAmbient 等)。”
我绝对不想在后台播放声音(这就是我在应用退出活动时暂停音频队列的原因)。那么,我做错了什么?
【问题讨论】:
-
好吧,[AudioQueueStart API](developer.apple.com/library/mac/documentation/MusicAudio/…) 的 Apple 文档声明它“开始播放或录制音频”,所以也许你不应该打这个电话。您是否需要 OSStatus 来做其他事情?此外,该方法的第二个参数是 AudioTimeStamp 类型,因此它可能需要 NULL 或实际结构,而不是 0。
标签: ios objective-c audio audioqueue