forked from shadowfacts/Tusker
71 lines
2.2 KiB
Swift
71 lines
2.2 KiB
Swift
//
|
|
// GalleryPlayerViewController.swift
|
|
// Tusker
|
|
//
|
|
// Created by Shadowfacts on 6/21/20.
|
|
// Copyright © 2020 Shadowfacts. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
import AVKit
|
|
import Pachyderm
|
|
|
|
class GalleryPlayerViewController: UIViewController {
|
|
|
|
let playerVC = AVPlayerViewController()
|
|
|
|
var attachment: Attachment!
|
|
|
|
private var isFirstAppearance = true
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
view.backgroundColor = .black
|
|
|
|
playerVC.allowsPictureInPicturePlayback = true
|
|
|
|
playerVC.view.translatesAutoresizingMaskIntoConstraints = false
|
|
addChild(playerVC)
|
|
playerVC.didMove(toParent: self)
|
|
view.addSubview(playerVC.view)
|
|
|
|
NSLayoutConstraint.activate([
|
|
playerVC.view.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),
|
|
playerVC.view.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor),
|
|
playerVC.view.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
|
|
playerVC.view.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
|
|
])
|
|
}
|
|
|
|
override func viewDidAppear(_ animated: Bool) {
|
|
super.viewDidAppear(animated)
|
|
|
|
// starting while audio is already playing from another app often takes nearly a second,
|
|
// so do it on a background thread as to not block the UI
|
|
DispatchQueue.global(qos: .userInitiated).async {
|
|
AudioSessionHelper.enable()
|
|
AudioSessionHelper.setVideoPlayback()
|
|
|
|
DispatchQueue.main.async {
|
|
if self.isFirstAppearance {
|
|
self.isFirstAppearance = false
|
|
self.playerVC.player?.play()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
override func viewWillDisappear(_ animated: Bool) {
|
|
super.viewWillDisappear(animated)
|
|
|
|
// starting often takes around half a second,
|
|
// so do it on a background thread as to not block the UI
|
|
DispatchQueue.global(qos: .userInitiated).async {
|
|
AudioSessionHelper.setDefault()
|
|
AudioSessionHelper.disable()
|
|
}
|
|
}
|
|
|
|
}
|