WebView上的JavaScript麻烦在Jellybean上播放视频

时间:2014-11-12 17:09:34

标签: javascript android html5 video webview

我试图在WebView中播放视频(非Youtube或Vimeo)。我加载一个HTML文件,它运行一些Javascript来生成html5视频标签和控制它的方法。在Kitkat,一切正常,但我在支持Jellybean方面遇到了麻烦。

应该按时调用的javascript函数根本不会在Jellybean中被调用。然而,我可以忍受这个。主要问题是当我使用mWebView.loadUrl发送命令时(" javascript:video.play();");这种行为是僵硬的。有时它会完全忽略命令,有时它会捕获它,但不是像Kitkat那样恢复暂停的视频,而是从头开始重新启动视频。事实上,它每次都没有以相同的方式做出反应,这让我想知道操作系统的视频播放器是否会受到影响,或者我是否需要强调正确的元素。初始播放命令总是有效,但在视频开始播放和onShowCustomView()调用后,一切都会变坏。

在Kitkat中,视频只是在WebView中加载,但在Jellbean上,除非我创建自定义的WebChromeClient并处理onShowCustomView()中调用的视图,否则什么都不会显示。这给了我另一个视图对象(除了WebView),可能我处理得很差。我一直在阅读文档,但我仍然对我为什么要调用onShowCustomView()非常不了解(我非常高兴能在Kitkat上单独使用Webview中的所有内容),所以它&#39我不应该对它给我的观点做些什么。我知道这是实际显示视频的视图。

我几天来一直撞着这堵墙,感谢任何帮助或线索。

这里是onShowCustomView()

的代码
    // Need custom ChromeClient since android < 19
mWebView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onShowCustomView(View view, CustomViewCallback callback) {
        super.onShowCustomView(view, callback);
        ViewGroup.LayoutParams webViewSize = mWebView.getLayoutParams();

        FrameLayout frameLayout = (FrameLayout) view;
        SurfaceView focusedChild = (SurfaceView) frameLayout.getFocusedChild();
        frameLayout.removeAllViews();

        mWebView.addView(focusedChild, webViewSize); 

0 个答案:

没有答案