android webview自动播放Video
2014-06-09 21:25
344 查看
由于近期有个需求需要在webview加载完网页上的视频标签(html5 video),经过一番查资料和尝试之后,终于实现了,具体实现如下:自定义一个xml 里面包含Webview组件,自定义WebViewClient,实现onPageFinished方法,回调javascript,实现播放功能
package com.zr.webviewtest;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.webkit.ConsoleMessage;import android.webkit.WebChromeClient;import android.webkit.WebResourceResponse;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.FrameLayout;import com.samsung.zr.webviewtest.R;public class MainActivity extends Activity { private FrameLayout frameLayout = null; private WebView webView = null; private WebChromeClient chromeClient = null; private View myView = null; private WebChromeClient.CustomViewCallback myCallBack = null; public MainActivity() { } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); frameLayout = (FrameLayout)findViewById(R.id.framelayout); webView = (WebView)findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); webView.setWebViewClient(new MyWebviewCient()); chromeClient = new MyChromeClient(); webView.setWebChromeClient(chromeClient); webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS); webView.setHorizontalScrollBarEnabled(false); webView.setVerticalScrollBarEnabled(false); final String USER_AGENT_STRING = webView.getSettings().getUserAgentString() + " Rong/2.0"; webView.getSettings().setUserAgentString( USER_AGENT_STRING ); webView.getSettings().setSupportZoom(false); webView.getSettings().setPluginState(WebSettings.PluginState.ON); webView.getSettings().setLoadWithOverviewMode(true); webView.loadUrl("file:///android_asset/index.html"); if(savedInstanceState != null){ webView.restoreState(savedInstanceState); } } @Override public void onBackPressed() { if(myView == null){ super.onBackPressed(); } else{ chromeClient.onHideCustomView(); } } @Override protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub webView.saveState(outState); } public void addJavaScriptMap(Object obj, String objName){ webView.addJavascriptInterface(obj, objName); } public class MyWebviewCient extends WebViewClient{ @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { WebResourceResponse response = null; response = super.shouldInterceptRequest(view, url); return response; } @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); Log.d("dream", "***on page finished"); webView.loadUrl("javascript:myFunction()"); } } public class MyChromeClient extends WebChromeClient{ @Override public void onShowCustomView(View view, CustomViewCallback callback) { if(myView != null){ callback.onCustomViewHidden(); return; } frameLayout.removeView(webView); frameLayout.addView(view); myView = view; myCallBack = callback; } @Override public void onHideCustomView() { if(myView == null){ return; } frameLayout.removeView(myView); myView = null; frameLayout.addView(webView); myCallBack.onCustomViewHidden(); } @Override public boolean onConsoleMessage(ConsoleMessage consoleMessage) { // TODO Auto-generated method stub Log.d("ZR", consoleMessage.message()+" at "+consoleMessage.sourceId()+":"+consoleMessage.lineNumber()); return super.onConsoleMessage(consoleMessage); } } }XML布局文件:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/framelayout" android:layout_width="match_parent" android:layout_height="match_parent" > <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" /></FrameLayout>网页文件:
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta name="viewport" content=""/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>FamilyAlbum</title> <link rel="stylesheet" type="text/css" href="css/main.css" media="all"/> <script type="text/javascript" src="lib/jquery-1.7.2.min.js"> </script> <script type="text/javascript" src="lib/jquery-ui-1.8.23.custom.min.js"> </script> <script type="text/javascript" src="lib/jquery.confirm.js"> </script> <script type="text/javascript" src="js/main.js"> </script> <script type="text/javascript"> function myFunction() { //document.getElementById("demo").innerHTML="My First JavaScript Function"; var videos = document.getElementById('videoTag'); videos.loop = 'loop'; videos.play(); }</script></head><body> <video id="videoTag" src="file:///storage/emulated/0/big_buck_bunny.mp4" controls="controls" height="210px" width="380px"></video><button type="button" onclick="myFunction()">点击这里</button><p id="demo">A Paragraph.</p></body></html>源码下载地址: http://download.csdn.net/detail/xiangyong2008/7473159
相关文章推荐
- Android 使WebView支持HTML5 Video(全屏)播放的方法
- Android Webview中解决H5的音视频不能自动播放的问题
- Android 使WebView支持HTML5 Video(全屏)播放的方法
- 解决video标签在安卓webview下无法自动播放问题
- Android 使WebView支持HTML5 Video(全屏)播放的方法
- Android 使WebView支持HTML5 Video(全屏)播放的方法
- Android VideoView播放 项目中的 视频文件 自动横屏 全屏播放
- Android Webview中解决H5的音视频不能自动播放、只有声音没有图像的问题
- 如何用Android webview播放HTML5 video标签
- Android编程使WebView支持HTML5 Video全屏播放的解决方法
- android webview 全屏播放H5 (Playing HTML5 video on fullscreen in android webview)
- video标签在安卓webview下无法自动播放问题的解决方法
- Android Webview播放HTML5 video的一个思路
- android webview 播放 video经验总结
- Android Webview中解决H5的音视频不能自动播放的问题
- android H5 webview 无法自动播放音乐 autoplay
- android 用VideoView播放本地视频文件
- android webview 播放swf 失败<彻底解决黑框>
- Android利用WebView开发browser中flash无法播放的问题
- android videoview 隐藏 播放按钮