Aquí incluyo cómo un amigo mío resolvió el problema de mostrar videos en HTML en Nexus One:
Nunca pude hacer que el video se reprodujera en línea. De hecho, muchas personas en Internet mencionan explícitamente que la reproducción de video en línea en HTML es compatible desde Honeycomb, y estábamos peleando con Froyo y Gingerbread ... También para teléfonos más pequeños, creo que jugar a pantalla completa es muy natural; de lo contrario, no tanto es visible . Entonces, el objetivo era hacer que el video se abriera en pantalla completa. Sin embargo, las soluciones propuestas en este hilo no funcionaron para nosotros: hacer clic en el elemento no desencadenó nada. Además, se mostraron los controles de video, pero no se mostró ningún póster, por lo que la experiencia del usuario fue aún más extraña. Entonces lo que hizo fue lo siguiente:
Exponga el código nativo al HTML para que se pueda llamar a través de javascript:
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
El código en sí tenía una función que llamaba a la actividad nativa para reproducir el video:
public class JavaScriptInterface {
private Activity activity;
public JavaScriptInterface(Activity activiy) {
this.activity = activiy;
}
public void startVideo(String videoAddress){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(videoAddress), "video/3gpp"); // The Mime type can actually be determined from the file
activity.startActivity(intent);
}
}
Luego, en el propio HTML, siguió fallando en hacer que la etiqueta de video funcionara al reproducir el video. Por lo tanto, finalmente decidió sobrescribir el onclick
evento del video, haciendo que hiciera la reproducción real. Esto casi funcionó para él, excepto que no se mostró ningún cartel. Aquí viene la parte más extraña: seguía recibiendo ERROR/AndroidRuntime(7391): java.lang.RuntimeException: Null or empty value for header "Host"
cada vez que configuraba el poster
atributo de la etiqueta. Finalmente encontró el problema, que era muy extraño: resultó que había mantenido la source
subetiqueta en la video
etiqueta, pero nunca la usó. Y bastante extraño exactamente esto estaba causando el problema. Ahora vea su definición de la video
sección:
<video width="320" height="240" controls="controls" poster='poster.gif' onclick="playVideo('file:///sdcard/test.3gp');" >
Your browser does not support the video tag.
</video>
Por supuesto, también debe agregar la definición de la función javascript en el encabezado de la página:
<script>
function playVideo(video){
window.JSInterface.startVideo(video);
}
</script>
Me doy cuenta de que esta no es una solución puramente HTML, pero es lo mejor que pudimos hacer con el tipo de teléfono Nexus One. Todos los créditos de esta solución van a Dimitar Zlatkov Dimitrov.