Buscando en YouTube HTML5 video sobre Android WebView

EDITAR Nevermind, YouTube publicó la API de Native Android ( https://developers.google.com/youtube/android/player/ )

Tengo una aplicación que muestra un videoview HTML5 sobre un WebView. Este video está obligado a ser HTML5 del servicio de YouTube ( http://www.youtube.com/embed/3FFyT039tJ0?autoplay=1&rel=0&showinfo=0&html5=1&start=90&end=176 )

Como se puede ver en la URL, el parámetro "start" muestra el número de segundos que el video debe comenzar a reproducir. He estado usando el método onShowCustomView de WebChromeClient para obtener el objeto VideoView creado por el WebView, como se ve aquí .

Cuando tengo la referencia a la VideoView , puedo usar el método seekTo() para lograr mi objetivo. Hasta aquí todo está bien, pero sólo para versiones de Android inferiores a 4.x.

Como muchos de ustedes saben, el método onShowCustomView de WebViewChromeClient , desde 4.x y forward, solo se llama cuando el usuario hace clic en el modo "FullScreen", pero no cuando el video empieza a reproducirse (como solía ser antes de 4.x).

Por lo tanto, el punto es que no puedo buscar 90 segundos hacia adelante porque no puedo obtener la referencia a la VideoView, y no puedo encontrar ninguna solución.

Si alguien tiene alguna idea … sería genial.

Aclamaciones.

Pruebe este:

  wv.getSettings().setPluginsEnabled(true); DisplayMetrics metrics = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay() .getMetrics(metrics); int w1 = (int) (metrics.widthPixels / metrics.density), h1 = w1 * 3 / 5; String item="http://www.youtube.com/embed/3FFyT039tJ0"; wv.getSettings().setJavaScriptEnabled(true); wv.setWebChromeClient(chromeClient); wv.getSettings().setPluginsEnabled(true); try { wv.loadData( "<html><body><iframe class=\"youtube-player\" type=\"text/html5\" width=\"" + (w1 - 20) + "\" height=\"" + h1 + "\" src=\"" + item + "\" frameborder=\"0\"\"allowfullscreen\"></iframe></body></html>", "text/html5", "utf-8"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } 

Y escriba un cliente webchrome como este:

  private WebChromeClient chromeClient = new WebChromeClient() { @Override public void onShowCustomView(View view, CustomViewCallback callback) { // TODO Auto-generated method stub super.onShowCustomView(view, callback); if (view instanceof FrameLayout) { FrameLayout frame = (FrameLayout) view; if (frame.getFocusedChild() instanceof VideoView) { VideoView video = (VideoView) frame.getFocusedChild(); frame.removeView(video); video.start(); } } } }; 

Espero que te ayude 🙂

Gracias

Si alguien quiere usar WebView para reproducir videos de youtube, dos consideraciones:

  1. Dependiendo de la versión de Android, no puede ser posible. Android versión 4.x a través de WebView no puede hacer eso (o no encontré el camino 🙂 Como he publicado aquí
  2. Si está en Android 5 o superior, debe configurar WebChromeClient en el componente WebView : setWebChromeClient(new WebChromeClient());

¡Espero eso ayude!

Para futuros espectadores

YouTube ahora tiene una API de jugador: https://developers.google.com/youtube/android/player/

Donde puede colocar fácilmente una vista en el xml y manejarla en actividad, aquí están los ejemplos: https://github.com/youtube/yt-android-player

  • Obtener la URL de descarga para el vídeo de YouTube (Android / Java)
  • El video IFRAME incorporado sigue reproduciéndose en segundo plano después de salir de la pantalla completa en Android
  • la forma actual recomendada para reproducir vídeo de youtube en todos los dispositivos Android
  • La vista web de Android no puede convertir el video de youtube incrustado a través de iframe
  • Forzar el vídeo para abrir en la aplicación de Youtube en Android
  • Al cambiar la orientación de la pantalla, se crea una nueva actividad
  • NullPointerException en com.google.android.youtube.player.YouTubePlayerSupportFragment.onStart (fuente desconocida)
  • Código para descargar el video de Youtube en Java, Android
  • Cómo mostrar la miniatura de los vídeos de YouTube en Android
  • API de Youtube: busca videos reproducibles en dispositivos móviles
  • La aplicación permite la reproducción de fondo de videos, problemas de Córdoba, Google Play rechaza aplicaciones
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.