mirror of
				https://github.com/yattee/yattee.git
				synced 2025-10-30 20:22:06 +00:00 
			
		
		
		
	| @@ -254,7 +254,18 @@ final class MPVBackend: PlayerBackend { | ||||
|  | ||||
|         let startPlaying = { | ||||
|             #if !os(macOS) | ||||
|                 try? AVAudioSession.sharedInstance().setActive(true) | ||||
|                 do { | ||||
|                     try AVAudioSession.sharedInstance().setActive(true) | ||||
|  | ||||
|                     NotificationCenter.default.addObserver( | ||||
|                         self, | ||||
|                         selector: #selector(self.handleAudioSessionInterruption(_:)), | ||||
|                         name: AVAudioSession.interruptionNotification, | ||||
|                         object: nil | ||||
|                     ) | ||||
|                 } catch { | ||||
|                     self.logger.error("Error setting up audio session: \(error)") | ||||
|                 } | ||||
|             #endif | ||||
|  | ||||
|             DispatchQueue.main.async { [weak self] in | ||||
| @@ -627,4 +638,31 @@ final class MPVBackend: PlayerBackend { | ||||
|             logger.info("MPV backend received unhandled property: \(name)") | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @objc func handleAudioSessionInterruption(_ notification: Notification) { | ||||
|         logger.info("Audio session interruption received.") | ||||
|  | ||||
|         guard let info = notification.userInfo, | ||||
|               let typeValue = info[AVAudioSessionInterruptionTypeKey] as? UInt | ||||
|         else { | ||||
|             logger.info("AVAudioSessionInterruptionTypeKey is missing or not a UInt in userInfo.") | ||||
|             return | ||||
|         } | ||||
|  | ||||
|         let type = AVAudioSession.InterruptionType(rawValue: typeValue) | ||||
|  | ||||
|         logger.info("Interruption type received: \(String(describing: type))") | ||||
|  | ||||
|         switch type { | ||||
|         case .began: | ||||
|             pause() | ||||
|             logger.info("Audio session interrupted.") | ||||
|         default: | ||||
|             break | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     deinit { | ||||
|         NotificationCenter.default.removeObserver(self, name: AVAudioSession.interruptionNotification, object: nil) | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Toni Förster
					Toni Förster