gpt4 book ai didi

ios - 取下耳机时防止视频暂停

转载 作者:行者123 更新时间:2023-11-28 12:35:18 24 4
gpt4 key购买 nike

使用语言:Swift 2.3

我正在使用 AVPlayerViewController,这是我的代码

let player = AVPlayer(URL: videoUrl!)            
playerViewController.player = player
playerViewController.showsPlaybackControls = false

我在这里做的是我正在播放一个应该是不可暂停和不可跳过的视频。

这里我使用 NSNotificationCenter 监控视频是否结束

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.actionAfterVideo), name: AVPlayerItemDidPlayToEndTimeNotification, object: nil)

这会关闭我的 AVPlayerViewController

func actionAfterVideo() {
playerViewController.dismissViewControllerAnimated(true, completion: nil)
}

除了当用户插入和拔下耳机时,所有这些都工作得很好。这会自动暂停视频。他们当然可以使用 Control Center 恢复它,但这并不直观。

有什么方法可以防止耳机从手机上拔下时视频暂停?

最佳答案

您可以添加一个通知来检查 session 是否已被中断,如下所示:

 NSNotificationCenter.defaultCenter().addObserver(self, selector: "playInterrupt:", name: AVAudioSessionInterruptionNotification, object: yourSession)

然后像这样添加它的playInterrupt实现:

func playInterrupt(notification: NSNotification)
{
if notification.name == AVAudioSessionInterruptionNotification && notification.userInfo != nil
{
var info = notification.userInfo!
var intValue: UInt = 0

(info[AVAudioSessionInterruptionTypeKey] as! NSValue).getValue(&intValue)

if let type = AVAudioSessionInterruptionType(rawValue: intValue)
{
switch type
{
case .Began:
player.pause()
case .Ended:
let timer = NSTimer.scheduledTimerWithTimeInterval(3, target: self, selector: "resumeNow:", userInfo: nil, repeats: false)
}
}
}
}

func resumeNow(timer : NSTimer)
{
player.play()
print("restart")
}

另请查看 Apple's documentation

关于ios - 取下耳机时防止视频暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41055099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com