DOUAudioStreamer icon indicating copy to clipboard operation
DOUAudioStreamer copied to clipboard

后台播放音乐,来电话,挂断电话就崩溃了

Open jandyway opened this issue 11 years ago • 1 comments

崩溃停在了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

jandyway avatar Jul 01 '14 10:07 jandyway

原因很简单: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) {

      }

johnlui avatar Jul 01 '16 06:07 johnlui