Fahren Sie mit der Wiedergabe des YouTube-Players fort, während Sie das Gerät mit separaten Orientierungslayouts drehen

8

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)?

    
Sandy 28.06.2017, 20:00
quelle

1 Antwort

1

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.

    
bubunyo 09.07.2017 09:31
quelle