Как возобновить фоновую музыку после исходящего телефонного звонка (iOS)? - PullRequest
7 голосов
/ 27 октября 2011

Я использую AVAudioPlayer для воспроизведения музыки (поддерживается фон).У меня вопрос: если я хочу позвонить кому-нибудь, когда слушаю музыку, как возобновить ее после звонка?Я реализовал метод делегата AVAudioPlayer:

- (void)audioPlayerEndInterruption:(AVAudioPlayer *)thePlayer {
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
    [self.player play];
}

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

Я также пытался использовать метод AVAudioSessionDelegate (просто попытка):

- (void)viewDidLoad {
    [[AVAudioSession sharedInstance] setDelegate:self];
}

- (void)endInterruption
{
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
    [self.player play];
}

но опять же это не заставит музыку возобновиться.Любые идеи о том, как решить эту проблему?

Ответы [ 3 ]

1 голос
/ 29 октября 2011

В iOS приложение не может начать воспроизведение звука, когда оно уже находится в фоновом режиме.Если звук вашего приложения остановлен из-за того, что приложение переднего плана взяло под контроль аудиосеанс, (в настоящее время) нет способа вернуть его обратно.

1 голос
/ 29 января 2014

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

[[AVAudioSession sharedInstance] setActive:NO withFlags:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error];
1 голос
/ 27 октября 2011

Странно из вашего кода то, что вы говорите, что используете AVAudioPlayer, почему тогда вы реализуете AVAudioSessionDelegate?

И у вас плохая реализация методов делегата.См. Документы

от AVAudioPlayerDelegate:

- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player

- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withFlags:(NSUInteger)flags

Поэтому попробуйте реализовать их следующим образом, ион должен работать правильно

...