DOUAudioStreamer
DOUAudioStreamer copied to clipboard
后台播放音乐,来电话,挂断电话就崩溃了
崩溃停在了DOUAudioEventLoop.m文件的- (BOOL)_handleEvent:(event_type)event withStreamer:(DOUAudioStreamer **)streamer方法中的: NSAssert(status == noErr, @"failed to activate audio session"); 这个断言失败,status 不等于noErr, 打印出来了failed to activate audio session
原因很简单:http://stackoverflow.com/a/6999245/4404288
解决办法如下:
将以下代码放到 if (status == noErr) { 之外:
[_renderer setInterrupted:NO];
if (*streamer != nil &&
[*streamer status] == DOUAudioStreamerPaused &&
[*streamer isPausedByInterruption]) {
[*streamer setPausedByInterruption:NO];
[self performSelector:@selector(play) onThread:[NSThread mainThread] withObject:nil waitUntilDone:NO];
}
然后将如下代码全部注释掉:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated"
OSStatus status;
status = AudioSessionSetActive(TRUE);
NSAssert(status == noErr, @"failed to activate audio session");
#pragma clang diagnostic pop
if (status == noErr) {
}