今天发现 WebView里播放优酷的视频点击播放按钮后没反应,于是看官方文档和搜索解决,下面是我在别人基础上做的补充:

 
android webView 无法播放视频,无法暂停,继续播放视频问题,无法根据浏览器居中显示内容问题
 
此次遇到一个问题就是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 播放视频总结的更多相关文章

  1. [转]Android WebView播放视频(包括全屏播放),androidwebview

    Android WebView播放视频(包括全屏播放),androidwebview 最近项目开发中用到了WebView播放视频的功能,总结了开发中犯过的错误,这些错误在开发是及容易遇到的,所以我这里 ...

  2. Android WebView播放视频flash(判断是否安装flash插件)

    Android WebView播放flash(判断是否安装flash插件)  最近帮一个同学做一个项目,断断续续的一些知识点记录一下.一个页面中有一个WebView,用来播放swf,如果系统中未安装f ...

  3. Android实现播放视频

    转载:http://www.bdqn.cn/news/201311/12100.shtml 使用VideoView播放视频 VideoView,用于播放一段视频媒体,它继承了SurfaceView,位 ...

  4. Android VideoView播放视频

    今天介绍一下Android的视频播放控件VideoView,下面介绍一下VideoView的使用步骤: 1.在界面布局中定义VideoView组件,或者在程序中创建VideoView组件. 2.调用V ...

  5. Android OpenGL 播放视频学习

    1, 初步接触Open GL: http://www.cnblogs.com/TerryBlog/archive/2010/07/09/1774475.html 使用GLSurfaceView和Ren ...

  6. android webview 播放 video经验总结

    在目前PC浏览器上,对video的支持基本都没什么问题了.但是如果用webview去跑这样的页面就会遇到许多问题. 下面一段html <!DOCTYPE html> <html> ...

  7. Android SurfaceView播放视频时横竖屏的调整

    对于横屏录制的视频就横屏播放,对于竖屏录制的视频就竖屏播放. 在mainifest文件里对负责播放的Activity添加以下属性“ android:configChanges="orient ...

  8. 微信Android自动播放视频(可交互,设置层级,无控制条,非X5)ffmpeg,jsmpeg.js,.ts视频

    原料: ffmpeg : http://ffmpeg.zeranoe.com/builds/  win64 https://evermeet.cx/ffmpeg/   mac OS X 64 jsmp ...

  9. android中使用surfaceview+MediaPlayer播放视频

    Android中播放视频主要有两种方式: 使用其自带的播放器.指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型 使用android自带的VideoView,这种方法 ...

随机推荐

  1. linux bash history

    vim /etc/profile export HISTSIZE=10000 export HISTTIMEFORMAT="`whoami` : %F %T : " export ...

  2. redmine一键安装

    参加项目 bitnami项目  https://bitnami.com/stack/redmine/installer 百度网盘地址为:http://pan.baidu.com/s/1jESnO

  3. MVC3中 ViewBag、ViewData和TempData的使用和区别

    在MVC3开始,视图数据可以通过ViewBag属性访问,在MVC2中则是使用ViewData.MVC3中保留了ViewData的使用.ViewBag 是动态类型(dynamic),ViewData 是 ...

  4. IntelliJ IDEA 项目相关的几个重要概念介绍

    必备材料介绍 IntelliJ IDEA 对其他 IDE 转过来的用户有特别优待,对其专门整理了非常棒的资料,还请其他 IDE 过来的用户抽时间查看,会有很大帮助:Eclipse 用户可以看:http ...

  5. NGINX反向代理

                                                    Nginx反向代理                                           ...

  6. 科学计算器的Java实现

    简易的科学计算器的实现 ---Java版 import javax.swing.*;//新的窗口组件包 import java.awt.*; import java.awt.event.*; publ ...

  7. 构造方法特点,void

    构造方法特点: 1.和类有相同的名字 2.无返回值 3.被默认强制void void作用:====>>说明声明的方法没有返回值 构造方法作用: -->初始化实例属性 -->用于 ...

  8. Thread create 创建进程

    #include "windows.h" #include "iostream" #include "stdio.h" void Start ...

  9. 救火必备linux命令

    系统参数: cat /proc/cpuinfo cpu相关参数 cat /proc/meminfo 内存相关参数 cat /proc/loadavg 负载情况 性能参数: )top M:按内存使用排序 ...

  10. mybatis(二)执行CRUD操作的两种方式配置和注解

    一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...