MPMoviePlayerController / AVAudioSession в фоновом режиме не возобновляет воспроизведение после входящего вызова - PullRequest
6 голосов
/ 12 января 2011

У меня проблема с MPMoviePlayerController. Я использую экземпляр для воспроизведения источника звука m3u8:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];

NSError *setCategoryError = nil;
[audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];
if (setCategoryError) {
}

NSError *activationError = nil;
[audioSession setActive:YES error:&activationError];
if (activationError) { 
}
self.player =
[[MPMoviePlayerController alloc] initWithContentURL: [NSURL URLWithString:url]];
player.view.hidden = YES;
player.shouldAutoplay = YES;
[player release];
[btnContainer addSubview: player.view];
player.useApplicationAudioSession = NO;

Он предназначен для воспроизведения, когда приложение переходит в фоновый режим, и все работает нормально.

Проблема в том, что в фоновом режиме я получаю входящий звонок. В этом случае поток приостанавливается, но не возвращается после завершения вызова. На самом деле, консоль говорит

2011-01-12 12:02:27.729 RAC1[1571:307] MP _playbackInterruptionDidEndNotification :: NSConcreteNotification 0x155890 {name = AVController_PlaybackInterruptionDidEndNotification; object = <AVController: 0x180d50>; userInfo = {
    "AVController_InterruptionStatusNotificationParameter" = "call.declined";
    "AVController_InterruptorNameNotificationParameter" = Phone;
}}, _state = 6
2011-01-12 12:02:27.730 RAC1[1571:307] MP _playbackInterruptionDidEndNotification :: resuming playback!

и приложение показывает поток как MPMoviePlaybackStatePlaying, но звук, кажется, останавливается. Я пытался сделать

[[AVAudioSession sharedInstance] setActive: YES error: &err]

но, похоже, не получается.

У кого-нибудь есть подсказка?

спасибо!

Ответы [ 2 ]

3 голосов
/ 12 января 2011

Кажется, мне нужно было

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

в viewDidAppear моего viewController ....

1 голос
/ 18 ноября 2011

Вы смотрели на эту ссылку для обработки прерываний звука.Вам необходимо настроить AVAudioSessionDelegate и обработать прерывания.

...