Vermeiden Sie die Beschädigung von Android VideoView, wenn Sie zum Hochformat zurückkehren

8

Ich habe es geschafft, einen begrenzten Video-Player zu schreiben, der in der Lage ist, eine .3gp-Datei aus dem Internet zu betrachten. Das Video wird zentriert im Vollbildmodus angezeigt, wobei das Video-Seitenverhältnis beibehalten wird. Außerdem wird das Video durch Rotationen nicht unterbrochen, was ohne Probleme weiterspielt.

Alles scheint in Ordnung, aber ... auf meinem HTC Legend, wenn Sie zum Hochformat zurückdrehen, ist das Video beschädigt, und statt Vollbild wird es mit seiner nativen Pixelgröße angezeigt. Aber wieder in die Landschaft zu drehen funktioniert und wird perfekt gezeigt. Irgendwelche Ideen warum? Leider habe ich nicht mehr Hardware, um das zu testen, und mir sind die Ideen zum Testen ausgegangen.

Sie können den vollständigen Beispielquellcode von Ссылка abrufen. Hier sind Screenshots, in denen ich die Anwendung öffne, in die Landschaft drehe, den Bildschirm berühre, um die Videosteuerelemente anzuzeigen, und dann zurück zum Hochformat blicke, um die Korruption zu sehen.

    
Grzegorz Adam Hankiewicz 29.06.2011, 17:14
quelle

2 Antworten

2

Im Quellcode unter Ссылка . Du hast den Kommentar hinzugefügt:

  

Da wir in der   AndroidManifest.xml das wir wollen unsere eigene Ausrichtung handhaben   ändert sich die Größe des Bildschirms in Abhängigkeit von Portrait oder   Landschaft.

Aus dem Quellcode AndroidManifest.xml

%Vor%

Wenn Sie also dieses Attribut zum Aktivitätselement im Manifest hinzufügen, würde ich dies interpretieren, da die Aktivität alle Orientierungsänderungen behandelt. nicht du?

Von Android-Entwicklern

  

Um zu erklären, dass Ihre Aktivität eine Konfigurationsänderung behandelt, bearbeiten Sie die   geeignetes Aktivitätselement in Ihrer Manifestdatei, um den   android: configChanges Attribut ... mehr

Sie sollten nicht Folgendes tun:

%Vor%

Ich habe ein Testprojekt erstellt, um zu prüfen, ob dies der Fall ist:

Rotierender Videostream Beispiel: Ссылка

Meine Schlussfolgerung: Ich musste die "onConfigurationChanged" in der Aktivität nicht übersteuern, um das Video sowohl im Hoch- als auch im Querformat korrekt anzuzeigen, und das Video spielt weiterhin bei Rotationsänderungen.

Fühlen Sie sich frei, den Code zu verbessern und zu benutzen:)

    
TouchBoarder 04.10.2012, 22:12
quelle
0

Es stellte sich heraus, dass mein gesamter Testfall falsch war. Bis zum Commit, bei dem ich das einfache Videobeispiel dafür verantwortlich mache, dass ich falsch liege war alles entsprechend zu dem Buch. Allerdings habe ich die android:configChanges="orientation" -Zeile vergessen, und das Hinzufügen dieser Zeile über den oben erwähnten Commit macht alles ohne Beschädigung des Videos möglich.

Ich werde hsigmonds Antwort als gültig markieren, um ein Testbeispiel zu liefern, mit dem ich vergleichen und das wahre Problem herausfinden könnte. Meine ganze Arbeit mit benutzerdefinierten Orientierungshandlern und einer Unterklasse von VideoView war falsch und falsch basierend auf der Frage Änderung der Android VideoView-Ausrichtung mit gepuffertem Video . Nicht dass das falsch ist, ich habe es einfach falsch angewendet (plus andere Antworten dort erwähnte auch das fehlende android:configChanges ).

    
quelle