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" 
  • html5 video en Android 4: reproducir pantalla completa y luego redirigir a otra página web - no funciona
  • Cómo reproducir video HTML5 mp4 en Android?
  • Detectar si el cliente permite la reproducción de medios en línea para vídeo HTML5
  • Se bloquea el video HTML 5 al ir a pantalla completa
  • ¿Cómo puedo hacer que mis vídeos incrustados se reproduzcan en el Kindle Fire?
  • El video se reproduce solo una vez en la vista Web de Android
  • Reproducción de vídeos del sistema de archivos Chrome no funciona en Android
  • Hls en html5 no funciona en el navegador de cromo android
  • Interceptar solicitud de fuente de video HTML5 en Android WebView
  • NullPointerException al ingresar video en pantalla completa webview nokia x
  • WebView de pantalla parcial con <video> cortado por la mitad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.