如何在Android中播放HLS视频?

如何在Android中播放HLS视频?,android,html,webview,stock,twitch,Android,Html,Webview,Stock,Twitch,以下是justin.com或本网站的流式视频 转到并选择任何实时流,从中获取url并添加html://.../hls 在屏幕中出现 伙计们告诉我: Android很奇怪,因为它不会在Android Chrome上工作,但会 在股票Android浏览器中工作(好吧,以前的股票Android 浏览器(现在Chrome是股票浏览器)。这对所有人都有效 Safari浏览器 我已经实现了这个代码 stream = (WebView) findViewById(R.id.webView1); strea

以下是justin.com或本网站的流式视频
转到并选择任何实时流,从中获取url并添加html://.../hls 在屏幕中出现

伙计们告诉我:

Android很奇怪,因为它不会在Android Chrome上工作,但会 在股票Android浏览器中工作(好吧,以前的股票Android 浏览器(现在Chrome是股票浏览器)。这对所有人都有效 Safari浏览器

我已经实现了这个代码

 stream = (WebView) findViewById(R.id.webView1);
stream.getSettings().setJavaScriptEnabled(true);
stream.getSettings().setPluginsEnabled(true);
stream.setBackgroundColor(Color.parseColor("#000000"));
stream.getSettings().setUseWideViewPort(true);
stream.setWebViewClient(new HelloWebViewClient());
stream.getSettings().setAppCacheEnabled(true);
stream.getSettings().setDomStorageEnabled(true);
stream.getSettings().setSaveFormData(true);
stream.getSettings().setLoadWithOverviewMode(true);
stream.getSettings().setUseWideViewPort(true);
stream.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
stream.setScrollbarFadingEnabled(false);
stream.loadUrl("http://www.twitch.tv/arteezy/hls");
stream.setVisibility(View.VISIBLE);

private class HelloWebViewClient extends WebViewClient 
{
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    {
        view.loadUrl(url);
        return true;
    }
}
但它会打开视频中的第一张图片并停止缓存。。。WebView似乎不缓存视频… 怎么了

已更新

之后,代码流仅播放2秒,然后停止

  stream = (WebView) findViewById(R.id.webView1);
            stream.getSettings().setJavaScriptEnabled(true);
            stream.getSettings().setJavaScriptEnabled(true);

            stream.getSettings().setPluginsEnabled(true);

            stream.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

            stream.setBackgroundColor(Color.parseColor("#000000"));
            stream.getSettings().setUseWideViewPort(true);
            // mWebView.loadUrl("data/game.swf");
            //mWebViewChat.getSettings().setBuiltInZoomControls(true);
            // mWebView.loadUrl("file:///android_asset/live.swf?channel=d2l");
            stream.setWebViewClient(new HelloWebViewClient());
             final Activity MyActivity = this;
            stream.setWebChromeClient(new WebChromeClient() {
                public void onProgressChanged(WebView view, int progress)   
                {
                 MyActivity.setTitle("Loading...");
                 MyActivity.setProgress(progress * 100); 
                    if (progress*100 == 100){
                         stream.clearFormData();
                         stream.clearHistory();
                        stream.clearCache(true);
                    }

                  }
                });
            stream.getSettings().setAppCacheEnabled(true);
            stream.getSettings().setDomStorageEnabled(true);
            stream.getSettings().setSaveFormData(true);

            stream.getSettings().setLoadWithOverviewMode(true);
            stream.getSettings().setUseWideViewPort(true);

            stream.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
            stream.setScrollbarFadingEnabled(false);
             stream.clearFormData();
                stream.clearHistory();
                stream.clearCache(true);

                stream.getSettings().setAppCacheEnabled(true);
                stream.getSettings().setDatabaseEnabled(true);
                stream.getSettings().setDomStorageEnabled(true);
            stream.getSettings().setPluginsEnabled(true);

            stream.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
            stream.getSettings().setPluginState(PluginState.ON);
            stream.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);// no need I think

            stream.getSettings().setLoadWithOverviewMode(true);
            stream.getSettings().setUseWideViewPort(true);
            stream.getSettings().setBuiltInZoomControls(true);
            stream.setInitialScale(1);

           stream.setWebChromeClient(new WebChromeClient());
stream.getSettings().setJavaScriptEnabled(true);

    stream.getSettings().setPluginsEnabled(true);

    stream.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

    stream.setBackgroundColor(Color.parseColor("#000000"));
    stream.getSettings().setUseWideViewPort(true);
    // mWebView.loadUrl("data/game.swf");
    //mWebViewChat.getSettings().setBuiltInZoomControls(true);
    // mWebView.loadUrl("file:///android_asset/live.swf?channel=d2l");
    stream.setWebViewClient(new HelloWebViewClient());
    stream.getSettings().setAppCacheEnabled(true);
    stream.getSettings().setDomStorageEnabled(true);
    stream.getSettings().setSaveFormData(true);

    stream.getSettings().setLoadWithOverviewMode(true);
    stream.getSettings().setUseWideViewPort(true);

    stream.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    stream.setScrollbarFadingEnabled(false);
     stream.clearFormData();
        stream.clearHistory();
        stream.clearCache(true);

        stream.getSettings().setAppCacheEnabled(true);
        stream.getSettings().setDatabaseEnabled(true);
        stream.getSettings().setDomStorageEnabled(true);
    stream.loadUrl("http://www.twitch.tv/arteezy/hls");
这段代码适合我:(安卓5.1 Nexus4)

我不知道为什么,但只有当我将WebView放入FrameLayout时,它才起作用:)

public class TwitchFragment extends Fragment implements View.OnClickListener {

@Nullable
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
                         final Bundle savedInstanceState) {
    final View root = inflater.inflate(R.layout.fragment_twitch, null, false);

    Button buttonTwitch = (Button) root.findViewById(R.id.buttonTwitch);
    buttonTwitch.setOnClickListener(this);

    return root;
}

@Override
public void onClick(final View v) {
    FrameLayout layout = (FrameLayout) getView();
    assert layout != null;
    layout.removeView(v);

    WebView webView = new WebView(ESportLiveScoreApplication.getInstance());

    layout.addView(webView);

    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setUseWideViewPort(false);
    webSettings.setDomStorageEnabled(true);
    webSettings.setSaveFormData(true);
    webSettings.setLoadWithOverviewMode(true);

    final WebChromeClient webChromeClient = new WebChromeClient();

    webView.setWebChromeClient(webChromeClient);
    webView.loadUrl("http://www.twitch.tv/h2p_gucio/hls");
}
}