2012-07-18 23 views
8

En mi aplicación para Android, me gustaría que el usuario toque una imagen una vez, reproduzca un video de youtube automáticamente y cuando el video termine, el usuario regresará inmediatamente a la aplicación. ¿Cuál es la mejor manera de hacer esto en Android?Reproducción de videos de youtube en la aplicación de Android

Intenté usar intents. Esto funciona porque el video aparece en lo que creo que es una página web de youtube. Sin embargo, reproducir el video requiere otro toque. Me gustaría evitar esto si es posible.

Probé todo el MediaPlayer, prepareAsync, setOnPreparedListener y nunca lo hice funcionar. Por alguna razón, nunca se llamó a Preparado. No se lanzaron excepciones. Estoy usando el emulador para probar y soy nuevo en Android, así que no estoy seguro si el comportamiento será diferente en los dispositivos físicos.

Esto funcionó bien en iOS al ser creativo con las vistas web. Espero que sea más sencillo en Android. El docs seguro lo hace sonar directo.

¡Salud!

+0

Esto podría ayudar a http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ – ASP

Respuesta

29

Actualización: Todo a continuación sigue siendo correcto, pero el official YouTube API for Android ya está disponible.

De lejos, la forma más fácil de reproducir un video de YouTube en Android es simplemente iniciar una intención para iniciar la aplicación de Android nativa de YouTube. Por supuesto, esto fallará si no está en un dispositivo certificado de Google, que no tiene el complemento de las aplicaciones de Google. (El Kindle Fire es probablemente el mayor ejemplo de tal dispositivo). El problema con este enfoque es que el usuario no cerrará automáticamente su aplicación cuando termine el video; tienen que presionar el botón Atrás, y en este momento probablemente los hayas perdido.

Como segunda opción, puede usar la API de MediaPlayer para reproducir videos de YouTube. Pero hay tres advertencias con este enfoque:

1) Debe realizar una llamada a la API del servicio web GData de YouTube, pasándole el ID del video. Obtendrá una gran cantidad de metadatos, junto con la URL RTSP que debe pasar a MediaPlayer para reproducir una transmisión con codificación H.264. Esta es probablemente la razón por la cual su intento de usar MediaPlayer falló; probablemente no estés usando la URL correcta para transmitir.

2) El enfoque GData/MediaPlayer solo reproducirá contenido de baja resolución (176x144 o similar). Esta es una decisión deliberada de parte de YouTube para evitar el robo de contenido. Por supuesto, esto no proporciona una experiencia muy satisfactoria. Existen ataques de puerta trasera para obtener transmisiones de mayor resolución, pero no son compatibles con todas las versiones de Android y su uso es una violación de los términos de servicio de YouTube.

3) Las secuencias RTSP pueden ser bloqueadas por algunas redes/cortafuegos internos, por lo que este enfoque puede no funcionar para todos los usuarios.

La tercera opción es insertar un WebView en su aplicación. Hay dos enfoques que puede tomar aquí:

1) Puede incrustar un objeto Flash y ejecutar el reproductor Flash de escritorio estándar para YouTube. Incluso puede usar la API de Javascript para controlar el reproductor y retransmitir eventos a la aplicación nativa de Android. Este enfoque funciona bien, pero desafortunadamente Flash se está desaprobando en la plataforma Android y no funcionará para Android 4.1 y versiones posteriores.

2) Puede insertar una etiqueta <video> para reproducir YouTube a través de HTML5. El soporte para esto varía entre varias versiones de Android. Funciona bien en Android 4.0 y más tarde; versiones anteriores tienen algo de soporte irregular HTML5 <video>. Por lo tanto, dependiendo de las versiones de Android que admita su aplicación, puede adoptar un enfoque híbrido de incrustación de HTML5 en Android 4.xo posterior y Flash para todas las versiones anteriores de Android.

Hay varios hilos aquí en StackOverflow sobre el uso de HTML5 para reproducir videos de YouTube; ninguno de ellos realmente describe todo el proceso que debes seguir en un solo lugar. He aquí los enlaces a algunos de ellos:

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

Todo esto va a conseguir dramáticamente más fácil en las semanas/meses venideros; en Google I/O 2012, presentaron/demostraron una nueva API de YouTube para Android que admitirá la incrustación directa de contenido de YouTube en su aplicación, con soporte completo para Android 2.2 (aproximadamente el 95% de la base de usuarios de Android a partir de este escrito). No puede llegar lo suficientemente rápido.

+0

¡La próxima API suena genial! Gracias por la info. – SundayMonday

+0

Me interesarían los indicadores de esos hackers que mencionas. Y me gustaría añadir que algunos dispositivos no pueden ver una descarga de Adobe Flash en Google Play, arruinando la estrategia híbrida de confiar en el reproductor Flash de YouTube para Froyo, Gingerbread, Honeycomb. –

+0

@Giuilo - En nuestra aplicación, recurrimos a la API GData/MediaPlayer si Flash no está presente. Es mejor que una pantalla negra. – mportuesisf

Cuestiones relacionadas