就像标题所说,我需要将assets文件夹中的视频(.mp4)加载到WebView中。 我尝试过几件事:
//首先
String webpage = "<!doctype html><head><meta charset='utf-8'></head><body><video id='video' controls='controls' autoplay='autoplay' height=" + m.getHeight() + " width=" + m.getWidth() + "><source src='file:///android_asset/1003/landscape_1003_1_m864.mp4' /></video></body></html>";
wv.loadData(webpage, "text/html", "utf-8");
//二
加载相同的网页,但使用loadUrl()方法
wv.loadUrl(webpage);
//第三
加载完全相同的网页,但使用其他方法
wv.loadDataWithBaseURL("file:///android_asset/", webpage,"text/html", "utf-8", null);
我试图将第一个参数更改为null,也就是网页,...
所有内容都必须动态添加(webview本身,视频的网址,宽度,高度......),因此制作XML文件不是一种选择。
我在互联网上找到的很多解决方案是将视频移动到Raw文件夹或SD卡,但这不是一个选项(业务决策)。
如果有人能帮助我会很好。
P.S。如果您可以帮我完全相同的事情,但在视频中显示视频,所有控件如html5视频元素(播放,暂停,搜索栏,全屏)都可以免费使用!
答案 0 :(得分:2)
我有同样的问题。不幸的是我没有找到解决方案。我只是做这样的事情:
打开视频
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
parent = (TabLayout)this.getParent();
setContentView(R.layout.XXXXXXXXXX);
l = (ProgressBar)findViewById(R.id.webL);
Resources res = getResources();
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginsEnabled(true);
mWebView.getSettings().setSupportZoom(true);
mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.loadUrl(res.getString(R.string.XXXXXX));
mWebView.getSettings().setAllowFileAccess(true);
mWebView.setWebViewClient(new WebViewClient()
{
@Override
public void onPageFinished(WebView view, String url)
{
super.onPageFinished(view, url);
l.setVisibility(View.INVISIBLE);
}
@Override
public void onPageStarted (WebView view, String url, Bitmap favicon)
{
super.onPageStarted(view, url, favicon);
l.setVisibility(View.VISIBLE);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
if (url.endsWith(".mp4") )
{
data.url = url;
Intent intent = new Intent(getApplicationContext(), VideoPlayer.class);
startActivity(intent);
return true;
}
else
{
return super.shouldOverrideUrlLoading(view, url);
}
}
});
}
..和我的视频播放器:
public class VideoPlayer extends Activity
{
private VideoView mVideoView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.setContentView(R.layout.video);
mVideoView = (VideoView) findViewById(R.id.surface_video);
mVideoView.setVideoURI(Uri.parse(data.url));
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
mVideoView.start();
}
答案 1 :(得分:0)
你可以使用下面的代码,让我知道这项工作是否记得android 2.2将支持html5。
webview.loadDataWithBaseURL("file:///android_asset",
"<video src=\"diagram1.mp4\" />", mimetype, encoding, null);
final String mimetype = "text/html";
final String encoding = "UTF-8";