mirror of
https://github.com/cranci1/Sora.git
synced 2026-05-07 10:40:26 +00:00
61 lines
1.7 KiB
Swift
61 lines
1.7 KiB
Swift
//
|
|
// NormalPlayer.swift
|
|
// Sora
|
|
//
|
|
// Created by Francesco on 18/12/24.
|
|
//
|
|
|
|
import AVKit
|
|
|
|
class NormalPlayer: AVPlayerViewController {
|
|
private var originalRate: Float = 1.0
|
|
private var holdGesture: UILongPressGestureRecognizer?
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
setupHoldGesture()
|
|
setupAudioSession()
|
|
}
|
|
|
|
private func setupHoldGesture() {
|
|
holdGesture = UILongPressGestureRecognizer(target: self, action: #selector(handleHoldGesture(_:)))
|
|
holdGesture?.minimumPressDuration = 0.5
|
|
if let holdGesture = holdGesture {
|
|
view.addGestureRecognizer(holdGesture)
|
|
}
|
|
}
|
|
|
|
@objc private func handleHoldGesture(_ gesture: UILongPressGestureRecognizer) {
|
|
switch gesture.state {
|
|
case .began:
|
|
beginHoldSpeed()
|
|
case .ended, .cancelled:
|
|
endHoldSpeed()
|
|
default:
|
|
break
|
|
}
|
|
}
|
|
|
|
private func beginHoldSpeed() {
|
|
guard let player = player else { return }
|
|
originalRate = player.rate
|
|
let holdSpeed = UserDefaults.standard.float(forKey: "holdSpeedPlayer")
|
|
player.rate = holdSpeed > 0 ? holdSpeed : 2.0
|
|
}
|
|
|
|
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")
|
|
}
|
|
}
|
|
}
|