【转】Android WebView 播放视频总结
setting.setPluginsEnabled(true); (从API 11 支持,可以不加)
这个从而播放视频,但是最新官方SDK说这个方法要放弃了,推荐使用
setting.setPluginState(PluginState.ON);(从API 11 支持,可以不加)
目前看来这两种方法都可以,但是webview的页面都finish了居然还能听到视频播放的声音,于是有查了下发现webview的
onResume方法可以继续播放,
onPause可以暂停播放,
但是这两个方法都是在Added in API level 11添加的,所以需要用反射来完成。
停止播放:在页面的onPause方法中使用:
webView.getClass().getMethod("onPause").invoke(webView,(Object[])null);(低版本测试正常)
继续播放:在页面的onResume方法中使用:
webView.getClass().getMethod("onResume").invoke(webView,(Object[])null);(低版本测试正常)
这样就可以控制视频的暂停和继续播放了。
另外说一点:
webView.resumeTimers()(不靠谱)
webView.pauseTimers();(不靠谱)
这两个方法有延迟,而且第二次再加载webview以后会出现上次播放的视频还会继续在播放,但是只能听到声音,所以个人感觉不靠谱,系统的浏览器估计是用了这个方法,按返回件关闭浏览器后都还能听到声音。
无法根据浏览器居中显示内容这个问题只要设置下面两个熟悉即可:
setting.setLoadWithOverviewMode(true);
setting.setUseWideViewPort(true);
继续研究:
同样的代码,经过在Android4.0+的设备上测试后发现,还是不能播放视频,于是继续添加了如下解决方法:
1.在webView的Activity配置里面加上:
android:hardwareAccelerated="true"
(官方文档解释说:
Hardware acceleration is enabled by default if your Target API level is >=14
http://developer.android.com/guide/topics/graphics/hardware-accel.html
所以只需要修改下Manifest文件,不需要设置这个属性也可以)
2.必须添加这句代码,没整明白为什么,但是加了这个就能播放
webView.setWebChromeClient(new WebChromeClient()); (一定要加)
这两步就可以播放了,有人说在application的配置里面也要加上:android:hardwareAccelerated="true",开始的时候我也加了,但是后来发现去掉这个也一样可以播放flash
但是现在的麻烦是视频不能全屏播放,只要点击了全屏按钮后,再次点击播放和暂停按钮以后,视频不会有任何反应,无法继续播放了。
网上查了下相关解决方法:
http://www.techfreestyle.com/fixed-android-4-0-full-screen-flash-problem-in-webview 这种方法测试过了 不能解决问题。
https://github.com/android/platform_packages_apps_browser/blob/master/src/com/android/browser/BaseUi.java 这个貌似源码,由于代码较多,所以还没研究。
【转】Android WebView 播放视频总结的更多相关文章
- [转]Android WebView播放视频(包括全屏播放),androidwebview
Android WebView播放视频(包括全屏播放),androidwebview 最近项目开发中用到了WebView播放视频的功能,总结了开发中犯过的错误,这些错误在开发是及容易遇到的,所以我这里 ...
- Android WebView播放视频flash(判断是否安装flash插件)
Android WebView播放flash(判断是否安装flash插件) 最近帮一个同学做一个项目,断断续续的一些知识点记录一下.一个页面中有一个WebView,用来播放swf,如果系统中未安装f ...
- Android实现播放视频
转载:http://www.bdqn.cn/news/201311/12100.shtml 使用VideoView播放视频 VideoView,用于播放一段视频媒体,它继承了SurfaceView,位 ...
- Android VideoView播放视频
今天介绍一下Android的视频播放控件VideoView,下面介绍一下VideoView的使用步骤: 1.在界面布局中定义VideoView组件,或者在程序中创建VideoView组件. 2.调用V ...
- Android OpenGL 播放视频学习
1, 初步接触Open GL: http://www.cnblogs.com/TerryBlog/archive/2010/07/09/1774475.html 使用GLSurfaceView和Ren ...
- android webview 播放 video经验总结
在目前PC浏览器上,对video的支持基本都没什么问题了.但是如果用webview去跑这样的页面就会遇到许多问题. 下面一段html <!DOCTYPE html> <html> ...
- Android SurfaceView播放视频时横竖屏的调整
对于横屏录制的视频就横屏播放,对于竖屏录制的视频就竖屏播放. 在mainifest文件里对负责播放的Activity添加以下属性“ android:configChanges="orient ...
- 微信Android自动播放视频(可交互,设置层级,无控制条,非X5)ffmpeg,jsmpeg.js,.ts视频
原料: ffmpeg : http://ffmpeg.zeranoe.com/builds/ win64 https://evermeet.cx/ffmpeg/ mac OS X 64 jsmp ...
- android中使用surfaceview+MediaPlayer播放视频
Android中播放视频主要有两种方式: 使用其自带的播放器.指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型 使用android自带的VideoView,这种方法 ...
随机推荐
- duplicate database的时候,rman连接 auxiliary database的后状态不正确
duplicate database的时候,rman连接 auxiliary database的后状态不正确 auxiliary database 已经被startup nomount,但是rman连 ...
- 续【C# 以管理员方式启动Winform,进而使用管理员控制Windows Service】
前提:在我们的域环境下,给分配了管理员级别两个账号(user0,user1). 需求:只允许一个账户运行进程"WindowsFormsApplication1": 1,)当已经运行 ...
- 重复点击主界面(TabBar)按钮刷新界面--点击状态栏回到顶部
1.监听按钮点击 2.判断是否是点击的同一个按钮(记录上次点击的按钮) 3.当重复点击相同按钮时,需要获取当前按钮对应控制器刷新界面 3.1 判断是否重复点击按钮,代码写在哪里? ...
- G面经prepare: Maximum Subsequence in Another String's Order
求string str1中含有string str2 order的 subsequence 的最小长度 DP做法:dp[i][j]定义为pattern对应到i位置,string对应到j位置时,shor ...
- Lintcode: Permutation Index II
Given a permutation which may contain repeated numbers, find its index in all the permutations of th ...
- topsort
top排序每次入队的是限制情况为0的... 就可以直接记录了,每次出队的就也是为0的,出队结果对每个子节点或者被限制节点,的限制条件-1 然后再判断有没有后继有没有为0的,有就入队! 出入队一次,找后 ...
- shell学习笔记(2)替换命令··与()的区别
·CMD·在执行的时候,shell不管··中的内容是什么,先进性解释,再把解释后的最终结果送给shell,如果解释后的结果不是shell可以行的命令,就会报错.但是仅仅把cmd的执行结果作为文本输出, ...
- POJ 3243 Clever Y(离散对数-拓展小步大步算法)
Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, ...
- ios blog
转得一个朋友的博客,大家可以看哈(主要时国外的) 主要分开发教程.示例项目.UI设计.问题解决几块. 开发教程: 即便过了入门阶段,还是要经常看看一些不错的实例教程. .http://mobile.t ...
- sql 中英文格式的时间转数字格式
select receiveBillDt,CONVERT(varchar(100), cast(receiveBillDt as datetime), 21),a.LoanDate from Prot ...