如何在Android中播放HLS视频?
以下是justin.com或本网站的流式视频如何在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
转到并选择任何实时流,从中获取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");
}
}