Jeu vidéo de youtube dans l'application Android
Dans mon application Android, j'aimerais à l'utilisateur de taper une image à la fois, une vidéo sur youtube jouer automatiquement et lorsque la vidéo est en fait l'utilisateur est immédiatement retourné à l'application. Quelle est la meilleure façon de le faire dans Android?
J'ai essayé d'utiliser les intentions. Cela fonctionne en ce que la vidéo arrive sur ce que je pense est une page web youtube. Cependant la lecture de la vidéo nécessite un autre robinet. Je voudrais éviter si possible.
J'ai essayé l'ensemble de MediaPlayer, prepareAsync, setOnPreparedListener et n'a jamais eu à travailler. Pour une raison quelconque onPrepared n'a jamais été appelé. Aucune exception n'a été levée. Je suis l'aide de l'émulateur pour tester et je suis nouveau sur Android donc je ne sais pas si le comportement sera différent sur les périphériques physiques.
J'ai eu ce travail bien sur iOS par faire preuve de créativité avec des webviews. J'espère que c'est plus simple sur Android. Le docs sûr de faire sonner tout droit vers l'avant.
Cheers!
OriginalL'auteur SundayMonday | 2012-07-18
Vous devez vous connecter pour publier un commentaire.
Mise à jour: Tout ci-dessous est toujours correct, mais le YouTube officielle de l'API pour Android est maintenant disponible.
De loin, la meilleure façon de jouer des vidéos YouTube sur Android est tout simplement le feu d'une Intention de lancer la native Android, l'application YouTube. Bien sûr, ceci ne fonctionnera pas si vous n'êtes pas sur un certifié Google dispositif, qui n'a pas le complément de Google apps. (Le Kindle Fire est probablement le plus grand exemple d'un tel dispositif). Le problème avec cette approche est que l'utilisateur ne sera pas automatiquement le vent jusqu'à revenir à votre application une fois la vidéo terminée, appuyez sur le bouton de Retour, et à ce stade, vous avez probablement perdu.
Comme une deuxième option, vous pouvez utiliser le lecteur multimédia API pour lire les vidéos de YouTube. Mais il y a trois bémols à cette approche:
1) Vous devez faire un appel à YouTube GData API webservice, en lui passant l'IDENTIFIANT de la vidéo. Vous allez obtenir une tonne de métadonnées, ainsi que le RTSP URL que vous devriez passer de lecteur multimédia pour la lecture d'un H. 264-flux encodé. C'est probablement la raison pour laquelle votre tentative d'utilisation du lecteur multimédia n'a pas; vous n'étaient probablement pas à l'aide de la correction de l'URL de flux.
2) La GData/MediaPlayer approche uniquement lire contenu à faible résolution (176x144 ou similaire). C'est une décision volontaire de la part de YouTube, pour éviter le vol de contenu. Bien sûr, cela ne veut pas fournir une expérience satisfaisante. Il y a en arrière-porte hacks afin d'obtenir une meilleure résolution des cours d'eau, mais ils ne sont pas pris en charge sur toutes les versions d'Android et l'utilisation, est une violation des conditions d'utilisation de YouTube.
3) Le flux RTSP peut être bloqué par certains réseaux internes/pare-feu, de sorte que cette approche peut ne pas fonctionner pour tous les utilisateurs.
La troisième option consiste à intégrer une WebView dans votre application. Il existe deux approches que vous pouvez prendre ici:
1) Vous pouvez insérer un objet Flash et exécutez le bureau standard Flash player for YouTube. Vous pouvez même utiliser l'API Javascript pour contrôler le lecteur, et les événements de relais de retour à la native Android app. Cette approche fonctionne bien, mais malheureusement, Flash est obsolète sur la plate-forme Android, et ne fonctionnera pas pour Android 4.1 et versions ultérieures.
2) Vous pouvez incorporer un
<video>
balise à jouer YouTube via HTML5. Soutien pour ce qui varie entre les différentes versions d'Android. Il fonctionne bien sur Android 4.0 et versions ultérieures; les versions antérieures ont quelque peu inégale HTML5<video>
de soutien. Ainsi, selon les versions d'Android votre application doit prendre en charge, vous pouvez prendre une approche hybride de l'intégration HTML5 sur Android 4.x ou plus tard, et Flash pour toutes les versions antérieures d'Android.Il y a plusieurs discussions ici sur StackOverflow sur l'utilisation de HTML5 pour lire des vidéos YouTube; aucun d'entre eux vraiment décrire l'ensemble du processus que vous devez suivre dans un seul endroit. Voici des liens vers quelques-uns d'entre eux:
Android - Comment lire des vidéos Youtube dans WebView?
Comment intégrer un clip sur YouTube dans une WebView sur Android
Jouer Youtube HTML5 Vidéo intégré dans Android WebView
Tout ceci permettra d'obtenir beaucoup plus facile dans les semaines/mois à venir; au Google I/O 2012, ils ont présenté/démontré une nouvelle API YouTube pour Android qui va appui direct à l'intégration de YouTube contenu dans votre application, avec le plein appui arrière pour Android 2.2 (environ 95% de l'Android userbase de cette écriture). Il ne peut pas arriver assez vite.
Je serais intéressé par des pointeurs vers ces arrière-porte hacks que vous mentionnez. Et je tiens à ajouter que certains appareils sont incapables de voir un téléchargement d'Adobe Flash sur Google Play, efficacement ruiner la stratégie hybride de s'appuyer sur YouTube Flash player pour Froyo, Gingerbread, Honeycomb.
Dans notre application, nous retombons à la GData/MediaPlayer API si Flash n'est pas présent. C'est mieux qu'un écran noir.
voici la vidéo de la session où Google présente sa nouvelle API YouTube: youtube.com/...
voici le code qui affiche à côté de la "porte dérobée" hack: keyeslabs.com/joomla/blogs/i-think-im-becoming-an-android/... Il utilise le GData/MediaPlayer API approche, et c'est un bon morceau de code d'exemple de cette technique. L'arrière-porte aspect, c'est qu'il attrape le code de format 18, qui est l'URL de la version à résolution élevée du flux. Je pense que le problème avec cette approche, la dernière fois que je l'ai essayé (il ya longtemps), a été qu'il a travaillé sur Android 2.1 et se brisa sur Android 2.2. Votre kilométrage peut varier d'aujourd'hui.
OriginalL'auteur mportuesisf