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:

  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.

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" 
  • La vista web de Android no reproduce el video mp4 en la misma página
  • ¿Cómo desactivar la interacción con los vídeos html5 en webview o capturar correctamente sus excepciones?
  • ¿Cómo puedo hacer que mis vídeos incrustados se reproduzcan en el Kindle Fire?
  • El sonido sigue reproduciéndose en el fondo HTML 5 Video
  • Html5 etiqueta de vídeo para jugar a pantalla completa con Android
  • ¿Qué carga de formato h.264 en android y IOS?
  • Reproducción de vídeos del sistema de archivos Chrome no funciona en Android
  • Android (Samsung S4) Pausas de vídeo HTML5
  • La vista web de Android no reproduce video, jwembedder
  • Pantalla completa de vídeo HTML5 en navegadores móviles (android)
  • Cómo reproducir video HTML5 mp4 en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.