El video no se reproduce en la vista web de Android
Estoy trabajando con una aplicación de Android y PhoneGap y estoy usando la etiqueta de video HTML5 para reproducir videos en mi página web. Cuando toco, el video no es visible y el video no se reproduce. ¿Cómo puedo reproducir un video HTML5 en Android?
Código para el mismo dado abajo
- Aplicación de efectos en el video que se está reproduciendo
- Descifrar audio / video sobre la marcha a MediaPlayer
- Subtítulos / Soporte de subtítulos en Android
- Extraer / modificar marcos de video en Android
- Uso de JWplayer en Android para reproducir video en Phonegap
<!DOCTYPE HTML> <html> <head> <script type="text/javascript" charset="utf-8" src="cordova-1.8.1.js"></script> <meta http-equiv="content-type" content="text/html; charset="> <title></title> </head> <body > <video id="video" autobuffer height="240" width="360" onclick="this.play();> <source src="test.mp4"> <source src="test.mp4" type="video/webm"> <source src="test.mp4" type="video/ogg"> </video> <div id="msg"></div> <script type="text/javascript"> </script> </body> </html>
y el método onCreate clase de actividad – >>
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final WebView webView = (WebView) findViewById(R.id.webview); WebSettings webSettings = webView.getSettings(); webSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); webView.getSettings().setJavaScriptEnabled(true); webSettings.setBuiltInZoomControls(true); webSettings.setPluginState(PluginState.ON); webView.getSettings().setPluginsEnabled(true); webSettings.setAllowFileAccess(true); webView.loadUrl("file:///android_asset/www/html5videoEvents.html"); }
- La aplicación de vista web de Android no permite que el reproductor de video pase a pantalla completa
- Problema de compatibilidad de vídeo: el video grabado en Android no se reproduce en el iPhone
- Capturar vídeo con proporción de aspecto 1: 1 en Android
- ¿Cómo hacer una llamada de video mediante programación en Android 2.2 o superior?
- Android: captura de video en dispositivo o emulador
- MediaRecorder - setOrientationHint () excepción / error
- ¿Es posible grabar vídeo de la cámara a través de un búfer en un archivo?
- Compresión rápida de video en Android
Prueba esto.
MainActivity.java
public class MainActivity extends Activity { WebView webPage; Button next; String rootDir = "file://" + Environment.getExternalStorageDirectory() + "/iR-unzip/testbook/"; WebChromeClient webChromeClient = new WebChromeClient(); WebViewClient webViewClient = new WebViewClient(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webPage = (WebView) findViewById(R.id.webview); webPage.setWebChromeClient(webChromeClient); webPage.setWebViewClient(new MyWebViewClient()); webPage.getSettings().setJavaScriptEnabled(true); webPage.getSettings().setPluginsEnabled(true); //webPage.getSettings().setPluginState(PluginState.ON); webPage.getSettings().setLoadWithOverviewMode(true); webPage.getSettings().setUseWideViewPort(true); webPage.loadUrl(rootDir + "/" + "chapter_1.html"); next = (Button) findViewById(R.id.page_changer); next.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { webPage.loadUrl(rootDir + "/" + "chapter_2.html"); } }); } public class MyWebChromeClient extends 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(); } } } } public class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } }
Agregue estas líneas antes de cargar contenido HTML en su WebView.
wv.setWebChromeClient(new WebChromeClient() { });
De la documentación:
Para admitir el vídeo en HTML5 en línea en su aplicación, debe activar la aceleración de hardware y establecer un WebChromeClient. Para el soporte de pantalla completa, las implementaciones de onShowCustomView (View, WebChromeClient.CustomViewCallback) y onHideCustomView () son obligatorias, getVideoLoadingProgressView () es opcional.