Picture-in-Picture, das bereits auf dem iPad eingeführt wurde, ist jetzt mit iOS kompatibel. Ich werde von nun an den Ablauf der Einführung in die Anwendung beschreiben.
Durch die Einführung von Bild-in-Bild ist die Videowiedergabe in anderen Apps möglich.
Darüber hinaus unterstützt die Anwendung Bild-in-Bild, Wenn die automatische Wiedergabe aktiviert ist, wird sie gestartet, wenn Sie die Home-Taste drücken.
Wenn Ihre Anwendung Bild-in-Bild unterstützt In der Einstellungs-App gibt es eine Verhaltenseinstellung, wenn Sie während des Betrachtens die Home-Taste drücken.
Ich glaube nicht, dass der durchschnittliche iPhone-Nutzer davon Kenntnis hat. Es wird an der Stelle hinzugefügt, an der Sie ungefähr 2 Ebenen der Einstellungsanwendung tauchen.
Artikel | iOS14 | iPadOS13 |
---|---|---|
Hierarchie | Einstellungen → Allgemein → Bild in Bild | Einstellungen → Startbildschirm und Dock → Multitasking |
Artikelname | Bild-in-Bild automatisch abspielen | Bild im Bild |
Erläuterungstext | Wenn diese Option aktiviert ist, wird das Video auch dann in der Überlagerung abgespielt, wenn Sie die Home-Taste drücken. | das Gleiche |
Als Nächstes habe ich untersucht, wie sich das Verhalten ändert, je nachdem, ob die Einstellung für die automatische Wiedergabe von Bild zu Bild aktiviert / deaktiviert ist. Ich überprüfte auch, ob es einen anderen Draht gab, der das Bild in Bild starten würde.
Verhalten der TV-App (echter Apfel) </ b> https://apps.apple.com/jp/app/apple-tv/id1174078549
Operation | Autoplay ON | Autoplay AUS |
---|---|---|
Drücken Sie die Home-Taste | Wechseln Sie zum Startbildschirm und starten Sie Bild-in-Bild | Übergang zum Startbildschirm, Wiedergabe stoppt und Audio stoppt * 1 |
Drücken Sie die Bild-in-Bild-Taste | Wechseln Sie zum Startbildschirm und starten Sie Bild-in-Bild | Wechseln Sie zum Startbildschirm und starten Sie Bild-in-Bild |
Wischen Sie auf dem Wiedergabebildschirm nach unten | Die Anzeige stoppt | Die Anzeige stoppt |
Zuckungsverhalten </ b>
Operation | Autoplay ON | Autoplay AUS |
---|---|---|
Drücken Sie die Home-Taste | Wechseln Sie zum Startbildschirm und starten Sie Bild-in-Bild | Übergang zum Startbildschirm, Wiedergabe stoppt und Audio stoppt * 1 |
Drücken Sie die Bild-in-Bild-Taste | Wechseln Sie zum Startbildschirm und starten Sie Bild-in-Bild | Wechseln Sie zum Startbildschirm und starten Sie Bild-in-Bild |
Wischen Sie auf dem Wiedergabebildschirm nach unten | Proprietärer Minispieler startet | Proprietärer Minispieler startet |
Damit der Benutzer Bild-in-Bild startet Bedienen Sie mit der Home-Taste und bereiten Sie eine Bild-in-Bild-Taste vor.
Das Verhalten beim Drücken der Home-Taste folgt den Betriebssystemeinstellungen </ b>. Wenn Sie die Bild-in-Bild-Taste drücken, starten Sie Bild-in-Bild </ b> wie gewohnt.
Es gibt "AVPlayerView", "AVPlayerViewController" und "AVPlayerLayer", um den Player zu implementieren. Dieses Mal werden wir jedoch die Implementierung mit "AVPlayerLayer" beschreiben.
Überprüfen Sie dies, da es möglicherweise nicht von Betriebssystemen wie iOS12 unterstützt wird.
Informieren Sie das Betriebssystem darüber, dass das Bild-in-Bild abgespielt und vorbereitet wird.
Warten Sie, bis das Betriebssystem für die Bild-in-Bild-Wiedergabe bereit ist.
Der Startbefehl wird nur ausgeführt, wenn Sie mit der Bild-in-Bild-Schaltfläche beginnen.
https://developer.apple.com/documentation/avkit/adopting_picture_in_picture_in_a_custom_player
SamplePlayer.swift
func setupPictureInPicture() {
// Ensure PiP is supported by current device.
if AVPictureInPictureController.isPictureInPictureSupported() {
// Create a new controller, passing the reference to the AVPlayerLayer.
pictureInPictureController = AVPictureInPictureController(playerLayer: playerLayer)
pictureInPictureController.delegate = self
pipPossibleObservation = pictureInPictureController.observe(\AVPictureInPictureController.isPictureInPicturePossible,
options: [.initial, .new]) { [weak self] _, change in
// Update the PiP button's enabled state.
self?.pictureInPictureButton.isEnabled = change.newValue ?? false
}
} else {
// PiP isn't supported by the current device. Disable the PiP button.
pictureInPictureButton.isEnabled = false
}
}
@IBAction func togglePictureInPictureMode(_ sender: UIButton) {
if pictureInPictureController.isPictureInPictureActive {
pictureInPictureController.stopPictureInPicture()
} else {
pictureInPictureController.startPictureInPicture()
}
}
AVPictureInPictureController.isPictureInPictureSupported()
Entspricht 3-2-1.
Hier wird festgestellt, ob das Zielgerät Bild-in-Bild unterstützt.
AVPictureInPictureController(playerLayer: playerLayer)
Entspricht 3-2-2.
Ich erstelle einen AVPictureInPictureController.
Wenn Sie diesen AVPictureInPictureController erstellen, wird er automatisch gedrückt, wenn die Home-Taste gedrückt wird.
Die Bild-in-Bild-Wiedergabe beginnt.
AVPictureInPictureController.isPictureInPicturePossible
Entspricht 3-2-3.
Zwischen der Generierung von AVPictureInPictureController und seiner Aktivierung liegt eine Verzögerung von mehreren Sekunden </ b>.
Da es sich dynamisch ändert, scheint es, dass die Beispiel-App beobachten verwendet.
Wenn Sie Rx verwenden, ist es meiner Meinung nach möglich, die Parameter mit Rx zu überwachen.
pictureInPictureController.startPictureInPicture()
Entspricht 3-2-4.
Fordert einen Start an, wenn die Bild-in-Bild-Taste gedrückt wird, nachdem sie fertig ist.
Es ist nicht erforderlich, wenn die Home-Taste gedrückt wird, um die automatische Wiedergabe zu starten.
Wie im vorherigen Abschnitt beschrieben, gibt es eine Verzögerung von der Generierung von "AVPictureInPictureController" bis zu seiner Aktivierung. Wenn der Prozess nach dem Drücken der Taste gestartet wird, ist die Reaktion daher schlecht.
Wird derzeit untersucht </ b> Wenn "AVPictureInPictureController" generiert wird, wird es für einen Moment "wahr", kehrt aber sofort zu "falsch" zurück. Es mag ein Phänomen sein, das nur in meiner Umgebung auftritt, aber ich werde es nur für den Fall beschreiben.
Das Obige ist eine grobe Darstellung von Bild in Bild. Es kann in mehr als einem Dutzend Zeilen eingeführt werden. Warum also nicht?
Recommended Posts