Ich versuche, eine Ansicht mit einem YouTube-Player zu einer Aktivität hinzuzufügen, die beim Drehen des Geräts weiter abgespielt wird. Da die Benutzeroberfläche mehr als nur das Video enthält, verwende ich YouTubePlayerFragment
.
Wenn sich die Ausrichtung von Hochformat auf Querformat ändert, sollte das System eine andere Layoutdatei verwenden. Dieses Layout enthält auch den YouTube-Player als eine Ansicht, die nicht den gesamten Bildschirm einnimmt. Im Folgenden finden Sie den Mindestcode, um das Problem zu reproduzieren (für eine neue Android-App, mindestens API-Stufe 19).
%Vor%Hier ist die Layoutdatei:
%Vor%Ich weiß, dass die Entwickler der YouTubePlayer-API die manuelle Bearbeitung von Orientierungsänderungen empfehlen. Dies ist auch die akzeptierte Antwort in Wie kann man ein Fragmentfragment, das ein Video nach einer Orientierungsänderung spielt, behalten? . Leider funktioniert das nicht, weil die Layouts von Hoch- und Querformat zu komplex sind.
Die Dokumentation weist auf eine Möglichkeit hin, dies zu beheben, so dass boolean wasRestored
in der Callback-Methode onInitializationSuccess
true
ist, aber das ist das eigentliche Problem: wasRestored
im obigen Code ist immer false
.
Fazit: Wie hält man den YouTube-Player weiter auf Orientierungsänderungen fest, während separate Layouts pro Ausrichtung beibehalten werden (was ist der Hauptunterschied zu verknüpften Fragen)?
onInitializationSuccess
gibt ein Objekt YoutubePlayer
zurück, das eine Funktion für getCurrentTimeMillis()
hat. Speichern Sie dieses Objekt als Aktivitätsinstanz ( this.player = youTubePlayer
) in onInitializationSuccess
. Bevor die Aktivität zerstört wird ( oPause/onStop
), besorge dir die aktuelle Zeit und passiere das gespeicherte Fragment, das gespeichert werden soll.
Tags und Links android youtube android-youtube-api