Приостановить AVAudioPlayer при воспроизведении внешнего аудио - PullRequest
0 голосов
/ 29 сентября 2018

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

Итак, в основном вопрос: Есть лилюбой способ, которым я могу приостановить текущий AVAudioPlayer, когда поступают некоторые внешние звуки, такие как: музыка, входящий вызов, уведомления и т. д.

Я знаю, что для обнаружения вызова есть новый CXCallObserverDelegate, который помогаетнам, но для музыки и всего остального есть какое-нибудь простое решение, чтобы решить все это?

С точки зрения кода, все работает нормально, нет ни одной проблемы с воспроизведением аудио.У меня есть собственный путь и ошибка, ошибка возвращает ноль.

NSError *avPlayerError = nil; NSData* mp3Data = [[NSData alloc] initWithContentsOfFile: path options: NSDataReadingMappedIfSafe error: &avPlayerError];

1 Ответ

0 голосов
/ 29 сентября 2018

я использую этот код для своего приложения:

в AppDelegate, didFinishLaunchingWithOptions добавьте Observer для любого входящего прерывания

NotificationCenter.default.addObserver(self, selector: #selector(self.onAudioSessionEvent(noti:)), name: Notification.Name.AVAudioSessionInterruption, object: nil)

При возникновении любого прерывания эта функция будет вызываться

@objc func onAudioSessionEvent(noti:Notification){
    if noti.name == Notification.Name.AVAudioSessionInterruption
    {
        if let value = noti.userInfo![AVAudioSessionInterruptionTypeKey] as? NSNumber {
            if value.uintValue == AVAudioSessionInterruptionType.began.rawValue {
                print("start interrupt")


            }else{
                print("end interrupt")

            }
        }
    }
}
...