mirror of
https://github.com/cranci1/Sora.git
synced 2026-05-07 02:30:10 +00:00
test
This commit is contained in:
parent
3cf264fab8
commit
ec380f06d9
2 changed files with 61 additions and 0 deletions
|
|
@ -190,6 +190,10 @@ class CustomMediaPlayerViewController: UIViewController, UIGestureRecognizerDele
|
|||
private var subtitleDelay: Double = 0.0
|
||||
var currentPlaybackSpeed: Float = 1.0
|
||||
|
||||
private var wasPlayingBeforeBackground = false
|
||||
private var backgroundToken: Any?
|
||||
private var foregroundToken: Any?
|
||||
|
||||
init(module: ScrapingModule,
|
||||
urlString: String,
|
||||
fullUrl: String,
|
||||
|
|
@ -250,6 +254,14 @@ class CustomMediaPlayerViewController: UIViewController, UIGestureRecognizerDele
|
|||
super.viewDidLoad()
|
||||
view.backgroundColor = .black
|
||||
|
||||
backgroundToken = NotificationCenter.default.addObserver(forName: UIApplication.willResignActiveNotification, object: nil, queue: .main ) { [weak self] _ in
|
||||
self?.handleEnterBackground()
|
||||
}
|
||||
|
||||
foregroundToken = NotificationCenter.default.addObserver(forName: UIApplication.didBecomeActiveNotification, object: nil, queue: .main ) { [weak self] _ in
|
||||
self?.handleBecomeActive()
|
||||
}
|
||||
|
||||
setupHoldGesture()
|
||||
loadSubtitleSettings()
|
||||
setupPlayerViewController()
|
||||
|
|
@ -404,6 +416,21 @@ class CustomMediaPlayerViewController: UIViewController, UIGestureRecognizerDele
|
|||
player.pause()
|
||||
}
|
||||
|
||||
deinit {
|
||||
if let token = timeObserverToken {
|
||||
player.removeTimeObserver(token)
|
||||
}
|
||||
|
||||
if let backgroundToken = backgroundToken {
|
||||
NotificationCenter.default.removeObserver(backgroundToken)
|
||||
}
|
||||
if let foregroundToken = foregroundToken {
|
||||
NotificationCenter.default.removeObserver(foregroundToken)
|
||||
}
|
||||
|
||||
player.pause()
|
||||
}
|
||||
|
||||
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
|
||||
guard context == &playerItemKVOContext else {
|
||||
super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
|
||||
|
|
@ -1766,6 +1793,25 @@ class CustomMediaPlayerViewController: UIViewController, UIGestureRecognizerDele
|
|||
}
|
||||
}
|
||||
|
||||
func handleEnterBackground() {
|
||||
wasPlayingBeforeBackground = player.rate > 0
|
||||
if isPipAutoEnabled && AVPictureInPictureController.isPictureInPictureSupported() {
|
||||
startPipIfNeeded()
|
||||
} else {
|
||||
player.pause()
|
||||
}
|
||||
}
|
||||
|
||||
private func handleBecomeActive() {
|
||||
if wasPlayingBeforeBackground &&
|
||||
!(pipController?.isPictureInPictureActive ?? false) {
|
||||
player.play()
|
||||
player.rate = currentPlaybackSpeed
|
||||
isPlaying = true
|
||||
playPauseButton.image = UIImage(systemName: "pause.fill")
|
||||
}
|
||||
}
|
||||
|
||||
@objc private func skipIntro() {
|
||||
if let range = skipIntervals.op {
|
||||
player.seek(to: range.end)
|
||||
|
|
@ -1876,6 +1922,8 @@ class CustomMediaPlayerViewController: UIViewController, UIGestureRecognizerDele
|
|||
}
|
||||
}()
|
||||
|
||||
|
||||
|
||||
client.updateAnimeProgress(
|
||||
animeId: self.aniListID,
|
||||
episodeNumber: self.episodeNumber,
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ class NormalPlayer: AVPlayerViewController {
|
|||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
setupHoldGesture()
|
||||
setupAudioSession()
|
||||
}
|
||||
|
||||
private func setupHoldGesture() {
|
||||
|
|
@ -45,4 +46,16 @@ class NormalPlayer: AVPlayerViewController {
|
|||
private func endHoldSpeed() {
|
||||
player?.rate = originalRate
|
||||
}
|
||||
|
||||
func setupAudioSession() {
|
||||
do {
|
||||
let audioSession = AVAudioSession.sharedInstance()
|
||||
try audioSession.setCategory(.playback, mode: .moviePlayback, options: .mixWithOthers)
|
||||
try audioSession.setActive(true)
|
||||
|
||||
try audioSession.overrideOutputAudioPort(.speaker)
|
||||
} catch {
|
||||
Logger.shared.log("Didn't set up AVAudioSession: \(error)", type: "Debug")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue