Reproducción de videos de youtube en la aplicación de Android

En mi aplicación de Android, me gustaría que el usuario toque una imagen una vez, haga que se reproduzca un video de youtube automáticamente y, cuando finalice el video, el usuario vuelva inmediatamente a la aplicación. ¿Cuál es la mejor manera de hacer esto en 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.

Intenté 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. Los documentos lo hacen sonar claro.

¡Aclamaciones!

Actualización: todo a continuación sigue siendo correcto, pero la API oficial de YouTube para 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) Debes realizar una llamada a la API del servicio web GData de YouTube y pasarle 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 encoding H.264. Esta es probablemente la razón por la cual su bash 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 (176×144 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 de 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 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 versiones posteriores; las versiones anteriores tienen algo de soporte HTML5 irregular. 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. Aquí hay enlaces a algunos de ellos:

Android: ¿cómo se reproduce el video de Youtube en WebView?

Cómo incrustar un clip de YouTube en un WebView en Android

Reproduce video insertado en Youtube HTML5 en Android WebView

Todo esto será dramáticamente más fácil en las próximas semanas / meses; 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.