entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Como reproducir videos en el webview de Android?

Hola a tod@s,

He estado intentando lograr que mi aplicación en Android pueda reproducir los videos de Youtube y Vimeo, pero hasta el momento han sido intentos nulos.

He intentado correrlo en un Samsung Ace, S4, S3 pero en todos obtengo el mismo resultado.

Les pondré en contexto la sintaxis de mi código (Lo estoy haciendo en el ADT):

WebView webView = (WebView) findViewById(R.id.webView1);
webView.loadUrl("http://blog.tecnoficcion.com/");
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);

Gracias a todos por el tiempo y la ayuda.

@TecnoFiccion

1voto

kiokotzu comentado

este articulo puedes ver unos ejemplos de como realizarlo
http://www.broken-links.com/2010/07/08/making-html5-video-work-on-android-phones/

básicamente tienes que abrir el vídeo de la forma en que el navegador nativo lo hace:

public class InredisChromeClient extends WebChromeClient implements OnCompletionListener, OnErrorListener {
private InterfazWebInredis interfazWeb; // Use Your WebView instance instead

private VideoView mCustomVideoView;

private LinearLayout mContentView;
private FrameLayout mCustomViewContainer;
private WebChromeClient.CustomViewCallback mCustomViewCallback;
private LinearLayout mErrorConsoleContainer;
static final FrameLayout.LayoutParams COVER_SCREEN_GRAVITY_CENTER = new FrameLayout.LayoutParams(
        ViewGroup.LayoutParams.FILL_PARENT,
        ViewGroup.LayoutParams.FILL_PARENT, Gravity.CENTER);

public InredisChromeClient(InterfazWebInredis iwi) {
    super();
    this.interfazWeb = iwi;
}

public void onShowCustomView(View view, CustomViewCallback callback) {
    // super.onShowCustomView(view, callback);
    if (view instanceof FrameLayout) {
        mCustomViewContainer = (FrameLayout) view;
        mCustomViewCallback = callback;
        mContentView = (LinearLayout) interfazWeb.findViewById(R.id.mainContainer);
        if (mCustomViewContainer.getFocusedChild() instanceof VideoView) {
            mCustomVideoView = (VideoView) mCustomViewContainer.getFocusedChild();
            // frame.removeView(video);
            mContentView.setVisibility(View.GONE);
            mCustomViewContainer.setVisibility(View.VISIBLE);
            interfazWeb.setContentView(mCustomViewContainer);
            mCustomVideoView.setOnCompletionListener(this);
            mCustomVideoView.setOnErrorListener(this);
            mCustomVideoView.start();
        }
    }
}

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

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

@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
    interfazWeb.setContentView(R.layout.main);
    return true;
}

}

0voto

TecnoFiccion comentado

Validaré lo que me indicas @kiokotzu y comentaré de nuevo.

Gracias.

@TecnoFiccion

0voto

kiokotzu comentado

ok dale me cuentas como te fue

1 Respuesta

2votos

binamonk Puntos3790

A mi normalmente me funciona agregando solamente el

webView.getSettings().setJavaScriptEnabled(true);

creo que tu problema va a ser que necesitas mover la linea

webView.loadUrl("http://blog.tecnoficcion.com/");

al final para que primero se "setteen" los setings y despues mandas llamar la URL.

0voto

TecnoFiccion comentado

Muchas gracias Dan, he intentado nuevamente pero no he obtenido respuestas positivas, el video continua sin reproducir.

@TecnoFiccion

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta