2011-11-29 9 views
7

Tengo éxito para reproducir videos de Youtube transmitidos desde contenido HTML5 en Webview en Android, pero ahora el problema es que el video solo se reproduce la primera vez. Después de eso, VideoView solo va al final del archivo de video.El video se reproduce solo una vez en Webview de Android

Intenté borrar el caché como se sugiere here pero no tuve suerte.

¿Cuál podría ser la solución posible para este problema?

Por favor, intente siguiente código para ejecutar vídeo, esto ha estado utilizando algunas sugerencias dadas en stackoverflow.com

WebView webView = (WebView) findViewById(R.id.product_details_webview); 
WebSettings webSettings = webView.getSettings(); 
webSettings.setPluginState(WebSettings.PluginState.ON); 
webSettings.setJavaScriptEnabled(true); 
webSettings.setUseWideViewPort(true); 
webSettings.setLoadWithOverviewMode(true); 
webView.setWebChromeClient(new chromeClient()); 
webView.setWebViewClient(new WebViewClient(){ 

}); 
webView.loadUrl(url); 

public class chromeClient extends WebChromeClient implements OnCompletionListener, 
OnErrorListener{ 
    private WebView wv; 
    private VideoView mVideoView; 
    private LinearLayout mContentView; 
    private FrameLayout mCustomViewContainer; 
    private WebChromeClient.CustomViewCallback mCustomViewCallback; 
    FrameLayout.LayoutParams COVER_SCREEN_GRAVITY_CENTER = new 
FrameLayout.LayoutParams(
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER); 

    @Override 
    public void onShowCustomView(View view, CustomViewCallback callback) { 
     if (view instanceof FrameLayout) { 
      wv = (WebView)findViewById(R.id.product_details_webview); 
      mCustomViewContainer = (FrameLayout) view; 
      mCustomViewCallback = callback; 
      mContentView = (LinearLayout)findViewById(R.id.linearlayout1); 
      if (mCustomViewContainer.getFocusedChild() instanceof VideoView) { 
       mVideoView = (VideoView) mCustomViewContainer.getFocusedChild(); 
       // frame.removeView(video); 
       mContentView.setVisibility(View.GONE); 
       mCustomViewContainer.setVisibility(View.VISIBLE); 
       setContentView(mCustomViewContainer); 
       mVideoView.setOnCompletionListener(this); 
       mVideoView.setOnErrorListener(this); 
       mVideoView.start(); 

      } 
     } 
    } 

    public void onHideCustomView() { 
     if (mVideoView == null){ 
      return; 
     }else{ 
     // Hide the custom view. 
     mVideoView.setVisibility(View.GONE); 
     // Remove the custom view from its container. 
     mCustomViewContainer.removeView(mVideoView); 
     mVideoView = null; 
     mCustomViewContainer.setVisibility(View.GONE); 
     mCustomViewCallback.onCustomViewHidden(); 
     // Show the content view. 
     mContentView.setVisibility(View.VISIBLE); 
     } 
    } 


    public void onCompletion(MediaPlayer mp) { 
     mp.stop(); 
     mCustomViewContainer.setVisibility(View.GONE); 
     onHideCustomView(); 
     setContentView(mContentView); 
    } 

    public boolean onError(MediaPlayer arg0, int arg1, int arg2) { 
     setContentView(mContentView); 
     return true; 
    } 
    } 
+0

Genial, pude reproducir mi video gracias a esas líneas :) webView.setWebChromeClient (new WebChromeClient()); webView.setWebViewClient (nuevo WebViewClient()) – OlivierM

Respuesta

4

Añadir en su cliente de cromo:.

 @Override public void onPrepared(MediaPlayer mp) { 

     customViewCallback.onCustomViewHidden(); 
    } 

donde customViewCallback = devolución de llamada;.

+0

agregué lo mismo estoy consiguiendo fallar por favor dígame cómo deshacerse de ese bloqueo? consulte el enlace para crash ht tp: //stackoverflow.com/questions/14229077/you-tube-playing-only-once – Manju

1

¿Tienes un vídeo que trabajan dentro de un WebView con HTML5? Felicidades! No pude tratando de hacer eso :(

para arreglar mi problema Acabé dejando un marcador de posición en el HTML y el manejo del vídeo de código nativo utilizando la clase MediaPlayer

+0

¿Puede decirme que hay directamente reproducir el archivo mp4 en el navegador de Android porque no puedo jugar. Tengo el archivo de registro (archivo de formato mp4) con la clase mediarecoder y la tienda en el servidor, pero no tengo éxito para jugar en el navegador –

+0

@ Dr.nik: Lo siento. No entiendo su pregunta :( – Macarse

+0

tengo una actualización. Por favor, vea –

0

tuve este problema también he tenido que añadir un seek (0) parece que el siguiente vídeo que se reproduce a partir exactamente donde el fin último de vídeo. ed. Así que tuve que ir al comienzo del video antes de jugar.

Cuestiones relacionadas