我正在使用AVAudioPlayer
和NSFileHandle
做音频流。基本思想是我将流音频数据保存到带有文件系统的设备中,然后用于AVAudioPlayer
播放刚刚保存的文件。 AVAudioPlayer
即使正在进行流式传输,仍然可以播放该文件。
我有一个UIButton
开始流式传输/下载。当下载的数据累积到特定数量的 Bytes 时,将自动播放(触发AVAudioPlayer
“播放”方法)。AVAudioPlayer
我的问题是:我点击按钮开始流式传输/下载,然后很快按下 iPhone 的主页按钮,让我的应用程序进入后台。下载继续在后台运行,但“播放”方法AVAudioPlayer
返回“否”,这意味着“播放”方法不播放音频。
我在音频播放器的 init 方法中添加了AVAudioSession
相关代码:
- (id) initWithURL:(NSString *) downloadedMusicURL
{
if ((self = [super init]))
{
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
CFURLRef url = CFURLCreateWithFileSystemPath (NULL, (CFStringRef)downloadedMusicURL, kCFURLPOSIXPathStyle, FALSE);
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:CFBridgingRelease(url) error:nil];
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:YES error:nil];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
}
return self;
}
同样在 info.plist 中,我为键“必需的背景模式”添加了一个项目“应用程序播放音频”。但是,“播放”仍然没有在后台正确调用。我还错过了什么?提前非常感谢。