2012-07-18 18 views
8

In meiner Android-App möchte ich, dass der Nutzer einmal auf ein Bild klickt, ein Youtube-Video automatisch abgespielt wird und der Nutzer nach Abschluss des Videos sofort zur App zurückkehrt. Was ist der beste Weg, dies in Android zu tun?Youtube-Video in Android-App abspielen

Ich versuchte Intents zu verwenden. Das funktioniert dadurch, dass das Video auf einer YouTube-Webseite auftaucht. Das Abspielen des Videos erfordert jedoch ein weiteres Tippen. Das möchte ich möglichst vermeiden.

Ich habe versucht den ganzen MediaPlayer, prepareAsync, setOnPreparedListener und hat es nie funktioniert. Aus irgendeinem Grund wurde Prepared nie aufgerufen. Es wurden keine Ausnahmen ausgelöst. Ich benutze den Emulator zum Testen und ich bin neu in Android, daher bin ich mir nicht sicher, ob das Verhalten auf physischen Geräten anders sein wird.

Ich habe das funktioniert gut auf iOS, indem Sie kreativ mit Webviews. Ich hoffe, dass es auf Android einfacher ist. Die docs sorgt dafür, dass es geradeheraus klingt.

Prost!

+0

Dies könnte helfen http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ – ASP

Antwort

29

Aktualisierung: Alles unten ist immer noch korrekt, aber die official YouTube API for Android ist jetzt verfügbar.

Bei Weitem ist es am einfachsten, ein YouTube-Video auf Android zu spielen, indem einfach eine Absicht ausgelöst wird, um die native Android-App für YouTube zu starten. Natürlich wird dies fehlschlagen, wenn Sie nicht auf einem zertifizierten Google-Gerät sind, das nicht über die Google-Apps verfügt. (Das Kindle Fire ist wahrscheinlich das größte Beispiel für ein solches Gerät). Das Problem bei diesem Ansatz besteht darin, dass der Nutzer nach Abschluss des Videos nicht automatisch zu Ihrer App zurückkehrt. Sie müssen die Zurück-Taste drücken, und zu diesem Zeitpunkt haben Sie sie wahrscheinlich verloren.

Als zweite Option können Sie die MediaPlayer-API zum Abspielen von YouTube-Videos verwenden. Aber es gibt drei Vorbehalte bei diesem Ansatz:

1) Sie müssen einen Anruf an die GData-Webservice-API von YouTube senden und die ID des Videos weitergeben. Sie erhalten eine Menge Metadaten zurück, zusammen mit der RTSP-URL, die Sie an den MediaPlayer übergeben sollten, um einen H.264-kodierten Stream abzuspielen. Dies ist wahrscheinlich der Grund, warum der Versuch, den MediaPlayer zu verwenden, fehlgeschlagen ist. Sie haben wahrscheinlich nicht die richtige URL zum Streamen verwendet.

2) Der GData/MediaPlayer-Ansatz wird nur Inhalte mit niedriger Auflösung wiedergeben (176x144 oder ähnlich). Dies ist eine bewusste Entscheidung von YouTube, um den Diebstahl von Inhalten zu verhindern. Natürlich bietet dies keine sehr zufriedenstellende Erfahrung. Es gibt Backdoor-Hacks, um Streams mit höherer Auflösung zu erhalten, aber sie werden nicht auf allen Android-Versionen unterstützt und ihre Verwendung verstößt gegen die Nutzungsbedingungen von YouTube.

3) Die RTSP-Streams können durch einige interne Netzwerke/Firewalls blockiert werden, daher funktioniert dieser Ansatz möglicherweise nicht für alle Benutzer.

Die dritte Option besteht darin, ein WebView in Ihre Anwendung einzubetten. Es gibt zwei Ansätze, die Sie hier machen können:

1) Sie können ein Flash-Objekt einbetten und den Standard-Desktop-Flash-Player für YouTube ausführen. Sie können sogar die JavaScript-API verwenden, um den Player zu steuern und Ereignisse an die native Android-App weiterzuleiten. Dieser Ansatz funktioniert gut, aber leider wird Flash auf der Android-Plattform nicht mehr unterstützt und funktioniert nicht für Android 4.1 und höher.

2) Sie können ein <video>-Tag einbetten, um YouTube über HTML5 abzuspielen. Die Unterstützung dafür variiert zwischen verschiedenen Versionen von Android. Es funktioniert gut auf Android 4.0 und später; frühere Versionen haben etwas fleckige HTML5 <video> Unterstützung. Je nachdem, welche Versionen von Android Ihre Anwendung unterstützen muss, können Sie einen Hybridansatz verwenden, bei dem HTML5 auf Android 4.x oder höher und Flash für alle früheren Versionen von Android eingebettet wird.

In StackOverflow gibt es mehrere Threads über HTML5 zum Abspielen von YouTube-Videos. keiner von ihnen beschreibt wirklich den gesamten Prozess, dem Sie an einem Ort folgen müssen. Hier Links zu einigen von ihnen:

Android - How to play Youtube video in WebView?

How to embed a YouTube clip in a WebView on Android

Play Youtube HTML5 embedded Video in Android WebView

All dies wird erhalten dramatisch leichter in den nächsten Wochen/Monaten zu kommen; Auf der Google I/O 2012 wurde eine neue YouTube-API für Android vorgestellt/demotiert, die das direkte Einbetten von YouTube-Inhalten in Ihre Anwendung mit voller Unterstützung zurück auf Android 2.2 (etwa 95% der Android-Nutzerbasis zum Zeitpunkt des Schreibens) unterstützt. Es kann nicht schnell genug ankommen.

+0

Die kommende API hört sich gut an! Danke für die Information. – SundayMonday

+0

Ich wäre an Hinweisen auf die Hintertür-Hacks interessiert, die du erwähnt hast. Und ich möchte hinzufügen, dass einige Geräte einen Download für Adobe Flash bei Google Play nicht sehen können, was die hybride Strategie ruiniert, sich auf den YouTube-Flash-Player für Froyo, Gingerbread, Honeycomb zu verlassen. –

+0

@Giuilo - In unserer App greifen wir auf die GData/MediaPlayer API zurück, wenn Flash nicht vorhanden ist. Es ist besser als ein schwarzer Bildschirm. – mportuesisf