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:
- Cómo reproducir video en Android Web view usando html5
- Android HTML5 video - funciona al hacer clic en play, pero no video.play ()
- HTML 5 Reproducción automática Google Chrome Android No reproducción
- Reproducción de video HTML5 en pantalla completa en la vista web de Android
- NullPointerException al ingresar video en pantalla completa webview nokia x
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.
- Html5 video no se reproduce en android webview, pero funciona en (móvil) cromo
- Video HTML5 - búsqueda precisa en dispositivos Android?
- WebView de pantalla parcial con <video> cortado por la mitad
- Interceptar solicitud de fuente de video HTML5 en Android WebView
- Detener interminable búfer de vídeo html5 en cordova webview en dispositivos Samsung
- El video se reproduce solo una vez en la vista Web de Android
- ¿Hay una manera de hacer que VideoView siga jugando en segundo plano en la aplicación para Android?
- El video HTML5 en el modo de pantalla completa en la aplicación cordova se estira en dispositivos Android
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?