Implementar onShowCustomView en Android 3.1 lanza excepciones en HTML5VideoFullScreen
Estoy intentando reproducir video en html en pantalla completa. Cuando hago clic en el botón de pantalla completa en el método de video onShowCustomView se dispara. Aquí está mi implementación:
public void onShowCustomView(View view, CustomViewCallback callback) { super.onShowCustomView(view, callback); if (view instanceof FrameLayout) { customComponenet.addView(view, new FrameLayout.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT, Gravity.CENTER)); customComponenet.setVisibility(View.VISIBLE); } }
Donde customComponenet es FrameLayout colocado en la parte superior de mi diseño actual. Wideo está jugando bien, es visibile y todo parece estar bien, pero lanza:
- Android 2.X HTML5 Video final pantalla completa
- Pantalla negra en cromo para video html5 de Android
- Html5 etiqueta de vídeo para jugar a pantalla completa con Android
- HTML 5 Reproducción automática Google Chrome Android No reproducción
- La vista web de Android no reproduce video, jwembedder
08-27 22:16:07.520: ERROR/AndroidRuntime(7235): FATAL EXCEPTION: main 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): java.lang.NullPointerException 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at android.webkit.HTML5VideoFullScreen.switchProgressView(HTML5VideoFullScreen.java:320) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at android.webkit.HTML5VideoView.setPlayerBuffering(HTML5VideoView.java:319) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at android.webkit.HTML5VideoView.start(HTML5VideoView.java:85) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at android.webkit.HTML5VideoViewProxy$VideoPlayer.onPrepared(HTML5VideoViewProxy.java:257) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at android.webkit.HTML5VideoViewProxy.onPrepared(HTML5VideoViewProxy.java:278) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at android.webkit.HTML5VideoView.onPrepared(HTML5VideoView.java:265) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at android.webkit.HTML5VideoFullScreen.onPrepared(HTML5VideoFullScreen.java:164) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:1456) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at android.os.Handler.dispatchMessage(Handler.java:99) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at android.os.Looper.loop(Looper.java:132) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at android.app.ActivityThread.main(ActivityThread.java:4028) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at java.lang.reflect.Method.invokeNative(Native Method) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at java.lang.reflect.Method.invoke(Method.java:491) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 08-27 22:16:07.520: ERROR/AndroidRuntime(7235): at dalvik.system.NativeStart.main(Native Method)
¿Qué estoy haciendo mal?
Mis ajustes de WebView:
webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setPluginState(PluginState.ON); webView.getSettings().setDomStorageEnabled(true); webView.getSettings().setDatabasePath("/data/data/" + App.class.getPackage().getName() + "/databases"); webView.getSettings().setSupportZoom(false);
Estoy probando en Galaxy Tab 10.1, en el navegador predeterminado esto está funcionando bien. Puedo cambiar a la pantalla completa. Además, en mi aplicación cuando reproduzco vídeo embeded puedo oír sólo sonido y ver la barra de estado debajo de la zona donde el video debe ser, mientras que en el navegador puedo ver vídeo tanto incrustado en WebView y en pantalla completa.
EDITAR https://github.com/novemberox/VideoFail aquí es un proyecto de ejemplo con ese error, también puede abrirlo en el emulador, por lo que no es necesario tener un dispositivo real.
- Video HTML5 - búsqueda precisa en dispositivos Android?
- Android: "No se pudo ejecutar 'reproducir' en 'HTMLMediaElement': la API sólo puede iniciarse con un gesto del usuario
- ¿Tiene el navegador Android 2.1 de soporte HTML 5 y qué formato de vídeo se reproduce?
- Android HTML5 video - funciona al hacer clic en play, pero no video.play ()
- ¿Qué carga de formato h.264 en android y IOS?
- HTML5 video remove overlay play icon
- El video HTML5 en el modo de pantalla completa en la aplicación cordova se estira en dispositivos Android
- Detener interminable búfer de vídeo html5 en cordova webview en dispositivos Samsung
El NPE parece un error en HTML5VideoFullScreen, aunque no pude reproducirlo con mi emulador.
Posiblemente HTML5VideoFullScreen está esperando una vista no nula de WebChromeClient # getVideoLoadingProgressView . Intente reemplazar ese método para devolver un objeto no nulo Ver (por ejemplo, una vista 0x0 falsa en su diseño) y ver si sigue fallando.
¡No olvide activar Aceleración de hardware!
Puedes encontrar esto en:
Soporte de video HTML5
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.
Así que agrega esto a tu AndroidManifest.xml
<application android:hardwareAccelerated="true"
- ¿cómo puedo obtener el valor de webkit-column-count y la página actual o ID de columna?
- ¿Cómo determinar el recuento de métodos de la aplicación?