ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何使用html5在Android Web视图中播放视频

2019-06-30 18:10:10  阅读:164  来源: 互联网

标签:android html5 webview html5-video


我使用下面的代码在android WebView中播放视频,其中包含一个,我已将视频和海报图像放在资产文件夹中.

vWebview = (WebView)findViewById(R.id.VWebview);
vWebview.getSettings().setJavaScriptEnabled(true);
vWebview.getSettings().setPluginsEnabled(true);

ViewContent(raw);   


InputStream fileStream = getResources().openRawResource(R.raw.test); 
int fileLen = fileStream.available();
byte[] fileBuffer = new byte[fileLen]; 
fileStream.read(fileBuffer); 
fileStream.close(); 
String displayText = new String(fileBuffer);
vWebview.loadDataWithBaseURL("fake://not/needed", displayText, "text/html", "utf-8", "");

html文件是这样的:

<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Hello World</title>


<body>
<div>

<p>
<video src="file:///android_asset/bigbuck.m4v" poster="file:///android_asset/test.jpg" onclick="this.play();"/>
</p>

</div>
</body>
</html>

它工作正常.海报图像显示正常,只要我点击它就会出错:

05-12 10:24:22.207: ERROR/http(2882): Null or empty value for header "Host"
05-12 10:24:22.207: ERROR/webcoreglue(2882): *** Uncaught exception returned from Java call!
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): Uncaught handler: thread WebViewCoreThread exiting due to uncaught exception
05-12 10:24:22.262: ERROR/AndroidRuntime(2882): java.lang.RuntimeException: Null or empty value for header "Host"
05-12 10:24:22.262: ERROR/AndroidRuntime(2882):     at android.net.http.Request.addHeader(Request.java:161)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882):     at android.net.http.Request.<init>(Request.java:126)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882):     at android.net.http.RequestQueue.queueRequest(RequestQueue.java:359)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882):     at android.net.http.RequestQueue.queueRequest(RequestQueue.java:327)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882):     at android.webkit.HTML5VideoViewProxy$PosterDownloader.start(HTML5VideoViewProxy.java:275)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882):     at android.webkit.HTML5VideoViewProxy.loadPoster(HTML5VideoViewProxy.java:490)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882):     at android.webkit.WebViewCore.nativeTouchUp(Native Method)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882):     at android.webkit.WebViewCore.access$3400(WebViewCore.java:48)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882):     at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:1095)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882):     at android.os.Looper.loop(Looper.java:123)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882):     at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:612)
05-12 10:24:22.262: ERROR/AndroidRuntime(2882):     at java.lang.Thread.run(Thread.java:1096)

解决方法:

我将视频文件放在RAW文件夹中,并通过以下代码访问default.html文件中的视频文件:

  video.src ="android.resource://ProjectPackageAame/raw/bigbuck";
  video.type = "video/mp4";      
  video.load(); 
  video.play();

它像我想要的那样播放视频.还在AndroidManifest文件中添加了以下行.

  android:hardwareAccelerated="true"

试试这个 – where to place local video files for android webview html5 hybrid app

标签:android,html5,webview,html5-video
来源: https://codeday.me/bug/20190630/1339215.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有