视频在 Android 的 Webview 中只播放一次

Posted

技术标签:

【中文标题】视频在 Android 的 Webview 中只播放一次【英文标题】:Video plays only once in Webview of Android 【发布时间】:2012-01-08 18:43:33 【问题描述】:

我成功地在 android 的 Webview 中播放来自 html5 内容的流式 Youtube 视频,但现在的问题是视频只播放第一次。之后VideoView 只进入视频文件的末尾。

我尝试按照here 的建议清除缓存,但没有成功。

这个问题有什么可能的解决方案?

请尝试以下代码来运行视频,这一直在使用 ***.com 上给出的一些建议

WebView webView = (WebView) findViewById(R.id.product_details_webview);
WebSettings webSettings = webView.getSettings();
webSettings.setPluginState(WebSettings.PluginState.ON);
webSettings.setjavascriptEnabled(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webView.setWebChromeClient(new chromeClient());
webView.setWebViewClient(new WebViewClient()

);
webView.loadUrl(url);

public class chromeClient extends WebChromeClient implements OnCompletionListener,  
OnErrorListener
    private WebView wv;
    private VideoView mVideoView;
    private LinearLayout mContentView;
    private FrameLayout mCustomViewContainer;
    private WebChromeClient.CustomViewCallback mCustomViewCallback;
    FrameLayout.LayoutParams COVER_SCREEN_GRAVITY_CENTER = new   
FrameLayout.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER);

    @Override
    public void onShowCustomView(View view, CustomViewCallback callback) 
        if (view instanceof FrameLayout) 
            wv = (WebView)findViewById(R.id.product_details_webview);
            mCustomViewContainer = (FrameLayout) view;
            mCustomViewCallback = callback;
            mContentView = (LinearLayout)findViewById(R.id.linearlayout1);
            if (mCustomViewContainer.getFocusedChild() instanceof VideoView) 
                mVideoView = (VideoView) mCustomViewContainer.getFocusedChild();
                // frame.removeView(video);
                mContentView.setVisibility(View.GONE);
                mCustomViewContainer.setVisibility(View.VISIBLE);
                setContentView(mCustomViewContainer);
                mVideoView.setOnCompletionListener(this);
                mVideoView.setOnErrorListener(this);
                mVideoView.start();

            
        
    

    public void onHideCustomView() 
        if (mVideoView == null)
            return;
        else
        // Hide the custom view.
        mVideoView.setVisibility(View.GONE);
        // Remove the custom view from its container.
        mCustomViewContainer.removeView(mVideoView);
        mVideoView = null;
        mCustomViewContainer.setVisibility(View.GONE);
        mCustomViewCallback.onCustomViewHidden();
        // Show the content view.
        mContentView.setVisibility(View.VISIBLE);
        
    


    public void onCompletion(MediaPlayer mp) 
        mp.stop();
        mCustomViewContainer.setVisibility(View.GONE);
        onHideCustomView();
        setContentView(mContentView);
    

    public boolean onError(MediaPlayer arg0, int arg1, int arg2) 
        setContentView(mContentView);
        return true;
    
  

【问题讨论】:

太好了,多亏了这些行,我才能播放我的视频 :) webView.setWebChromeClient(new WebChromeClient()); webView.setWebViewClient(new WebViewClient()) 你找到解决方案了吗? 请检查以下选择的答案是否适合您 【参考方案1】:

添加你的 chrome 客户端:

        @Override public void onPrepared(MediaPlayer mp) 

        customViewCallback.onCustomViewHidden();
    

其中 customViewCallback = 回调;

【讨论】:

我添加了同样的东西我正在崩溃请告诉我如何摆脱那个崩溃?检查崩溃链接***.com/questions/14229077/you-tube-playing-only-once【参考方案2】:

您有一个使用 HTML5 在 WebView 中工作的视频?恭喜!我没有尝试这样做:(

为了解决我的问题,我最终在 HTML 中留下了一个占位符,并使用 MediaPlayer 类处理来自本机代码的视频。

【讨论】:

你能告诉我有没有直接在安卓浏览器中播放 mp4 文件,因为我无法播放。我有带有 mediarecoder 类的记录文件(mp4 格式文件)并存储在服务器中,但无法在浏览器上成功播放 @Dr.nik:对不起。我不明白你的问题:( @Dr.nik:我在回答中说的是我没有运气从WebView 播放视频,所以我使用MediaPlayer 类从本机代码(java)处理它SDK 自带的。 您好,我无法在评论中发布我的代码(我曾经在 webview 中播放流式视频)。请让我知道是否有任何其他方式可以将其发送给您。希望它能解决你的问题 @silwar:编辑您的问题并将其放在此处。【参考方案3】:

我也有这个问题。 我不得不添加一个 seek(0)。 似乎下一个视频正是从上一个视频结束的地方播放的。 所以我必须在播放之前转到视频的开头。

【讨论】:

以上是关于视频在 Android 的 Webview 中只播放一次的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 上的 webView 中显示视频

Android:在 Webview 上播放 youtube 视频

如何在 Android 上的 webView 中显示 YouTube 视频

为啥 Youtube 视频没有在 webview android 中播放

如何清除 Webview 内容以更改 Android Oreo 中的视频

如何解决在android开发中WebView在线播放视频黑屏啊?