varios - reproductor de video html5
Reproducción de video mp4 en la vista web con html5 en android (4)
¿Qué sucede si cambia "/sdcard/Download/video.mp4" a "file: ///sdcard/Download/video.mp4"? Me refiero a la parte html:
<video width="365" height="200" src="file:///sdcard/Download/video.mp4" controls autobuffer></video>
No pude abrir la página html en una aplicación web personalizada. Sin embargo, noté que sin agregar "file: ///" el video no se reproducía en mi navegador Android. (En mi caso, agregando "file: ///" tomó un tiempo antes de que el video comenzara a cargarse).
Estoy tratando de reproducir video mp4 en webView usando HTML5 en Android, pero desafortunadamente no funciona. Entonces, ¿alguien puede ayudarme? ¿Cómo puedo hacerlo?
Aquí está mi código de archivo HTML con el nombre new2.html
<video width="365" height="200" src="/sdcard/Download/video.mp4" controls autobuffer></video>
<!--<!DOCTYPE html>
<html>
<body>
<video width="320" height="240" controls autoplay>
<source src="/sdcard/Download/video.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</body>
</html>-->
El archivo Java es:
public class WebActivity extends Activity {
WebView wv;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.web_activity);
wv = (WebView) findViewById(R.id.webview);
wv.loadUrl("file:///android_asset/new2.html");
wv.getSettings().setAllowFileAccess(true);
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setPluginsEnabled(true);
// webview.loadUrl("file:///android_asset/new.html");
}
}
El archivo XML es:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
De este blog dice que hay dos pasos:
- Cree una nueva clase que extienda ContentProvider y anule esencialmente 1 método openFile. El método onCreate puede estar vacío y devolver verdadero y el resto solo arrojar UnsupportedOperationException.
- Agregue una entrada de proveedor a AndroidManifest.xml.
Esta página muestra cómo hacerlo también. A continuación, se incluye un resumen de esa página:
Paso 1: Declare su proveedor de contenido en AndroidManifest.xml:
<provider android:name="MyDataContentProvider"
android:authorities="com.techjini" />
^^^^^^^^^^^ change this
Paso 2:
Crea tu ContentProvider
e implementa openFile
. Todo lo que tienes que hacer es obtener un camino real desde uri, ábrelo y devuelve el descriptor
URI uri = URI.create("file:///data/data/com.techjini/files/myImage.jpeg");
^^^^^your path to your file
File file = new File(uri);
ParcelFileDescriptor parcel =
ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
return parcel;
Puede averiguar dónde se almacena su imagen usando:
System.out.println(getFilesDir().getAbsolutePath());
Ahora puedes cargar el archivo:
myWebView.loadUrl("content://com.techjini/myImage.jpeg");
^^^^^^^^^^^change to same as in manifest
Espero que ayude.
Debe llamar a su archivo a través del host local - file: // localhost / - de lo contrario, su teléfono no reconocerá que está solicitando permisos. Al usar su navegador sin localhost, está haciendo ping en un satélite y no puede regresar al re-diseño.
Obtendrá los controles para mostrar porque provienen de una carpeta html pública, pero su fuente (el video) no.
<video width="365" height="200" src="video.mp4" controls autobuffer></video>
y el video.mp4 debe estar en su carpeta de activos, el mismo lugar donde está poniendo su new2.html