android - 在 Android 3.1 上实现 onShowCustomView 在 HTML5VideoFullScreen 中抛出异常

标签 android html5-video

我正在尝试全屏播放 html 格式的视频。当我点击视频中的全屏按钮时, onShowCustomView 方法被触发。这是我的实现:

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);
    }
}

其中 customComponenet 是放置在我当前布局之上的 FrameLayout。 Wideo 播放得很好,它是可见的,一切都很好,但它抛出:

    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)

我做错了什么?

我的 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);

我正在 Galaxy Tab 10.1 上进行测试,在默认浏览器上运行正常。我可以切换到全屏。此外,在我的应用程序中,当我播放嵌入的视频时,我只能听到声音,并在视频应该出现的区域下方看到状态栏,而在浏览器上,我可以看到嵌入在 WebView 和全屏中的视频。

编辑 https://github.com/novemberox/VideoFail 这里是有那个错误的示例项目,你也可以在模拟器上打开它,所以你不需要有真实的设备。

最佳答案

NPE 看起来像是 HTML5VideoFullScreen 中的错误,但我无法用我的模拟器重现它。

可能 HTML5VideoFullScreen 需要来自 WebChromeClient#getVideoLoadingProgressView 的非空 View .尝试覆盖该方法以返回一个非 null View 对象(例如,布局中的虚假 0x0 View)并查看您是否仍然崩溃。

关于android - 在 Android 3.1 上实现 onShowCustomView 在 HTML5VideoFullScreen 中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7217159/

相关文章:

css - 在 Ionic 中删除 html5 视频标签上的空格

javascript - 测试浏览器是否支持未静音播放内联视频

java 不运行 if 结构在 onclick 监听器内

java - 垂直拖放到 RecyclerView 上后如何保留 firestore 中的项目位置

javascript - 如何在 svg 元素上播放 html 5 视频?

javascript - 在 Hulu 视频播放器中设置 videoElement.currentTime 不起作用,并且会破坏播放器

android - 如何从 Android 支持库中锁定 CollapsingToolbarLayout

android - FLAG_ACTIVITY_NEW_TASK 未按预期运行

android - 方向改变时 Activity 被杀死

javascript - 无法从此代码中看到视频?