如果这是在苹果文档中,那么我无法找到它-希望有人可以提供帮助:
我的应用程序偶尔会播放简短的音频剪辑——我希望音频与后台其他应用程序(如 iPod 应用程序)播放的音频混合在一起——但我也希望它在应用程序在后台运行时继续播放这些音频剪辑。
我在 info.plist 的所需背景模式设置中设置了“应用程序播放音频”(该应用程序也使用位置服务,因此也在那里设置)
我的应用在 applicationDidFinishLaunching 上设置了一个音频会话:
AudioSessionInitialize (NULL,NULL,NULL,NULL);
UInt32 sessionCategory = kAudioSessionCategory_AmbientSound;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,sizeof (sessionCategory),&sessionCategory);
AudioSessionSetActive(true);
在我的 viewWillAppear: 活动视图中的方法中,我有:
[super viewWillAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
以及 viewWillDisappear: 中相应的事件处理程序和 endReceivingRemoteControlEvents 代码:如iOS 4:背景音频的远程控制中所述
最后我有一个 AVAudioPlayer,以正常方式设置,在某些事件上播放声音
bool successful = [avAudioPlayer play];
if(!successful)
NSLog(@"did not play");
当应用程序处于前台时,应用程序工作正常并播放音频 - 但是当应用程序进入后台并且应用程序尝试播放声音时,[avAudioPlayer play] 的返回值为 NO 并且声音不播放 - 切换时回到前台,音频再次开始工作。
如果当我设置会话时,我改为使用
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
然后音频完美地在前景和背景中播放。但是 MediaPlayback 并不是这个应用程序真正正确的模式,因为我只是偶尔播放音频剪辑 - AmbientSound 确实是我应该使用的模式。
我错过了什么?是不是不可能使用 kAudioSessionCategory_AmbientSound 在后台播放音频?如果是这样,我在文档中没有找到任何关于此的内容。