今天发现 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. Real-Time SQL Monitoring

    Real-Time SQL Monitoring可以在sql运行的时候监控其性能. 缺省情况下,单个sql执行花费的CPU或I/O时间超过5秒或sql并行执行的时候,Real-Time SQL Mon ...

  2. RMQ (Range Minimal Query) 问题 ,稀疏表 ST

    RMQ ( 范围最小值查询 ) 问题是一种动态查询问题,它不需要修改元素,但要及时回答出数组 A 在区间 [l, r] 中最小的元素值. RMQ(Range Minimum/Maximum Query ...

  3. C++Primer 第一章

    /* 1.main函数的标准写法就只有两种,一种是带命令行的,一种是不带命令行的.其返回类型必须是int. 2.如果main函数最后没有return语句,则编译器会自动加上一句 return 0; * ...

  4. PostgreSQL Replication之第九章 与pgpool一起工作(7)

    9.7 处理故障转移和高可用 可以使用pgpool来解决的一些明显的问题是高可用性和故障转移.一般来讲,有使用pgpool或者不使用pgpool可以用来处理这些问题的各种方法. 9.7.1 使用Pos ...

  5. poj 题目分类(1)

    poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...

  6. Python学习总结11:获取当前运行类名和函数名

    一. 使用内置方法和修饰器方法获取类名.函数名 1. 外部获取 从外部的情况好获取,可以使用指向函数的对象,然后用__name__属性. def a(): pass a.__name__ 或者 get ...

  7. javascript 异常处理和事件处理

    异常捕获 1.异常:当javascript引擎执行JS代码时,发生了错误,导致程序停止运行. 2.异常抛出:当异常产生,并且将这个异常生成一个错误信息 3.异常捕获: try{发生异常的代码块:}ca ...

  8. C++之路进阶——bzoj1823(满汉全席)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser  hyxzc Logout 捐赠本站 Notice:由于本OJ建立在 ...

  9. JavaOOP项目 CMS内容管理系统

    数据库里创建一个News表,要有标题.作者.时间.内容等列. 1:首先要使用JDBC进行数据库连接,得先在项目里新建一个Folder,把Sqlserver 的驱动jar包导入. 2:使用MyEclip ...

  10. POJ 3356 AGTC(DP-最小编辑距离)

    Description Let x and y be two strings over some finite alphabet A. We would like to transform x int ...