Android使用WebView浏览有声音或者视频的网页,关闭WebView之后,声音或者视频不停止的解决办法

<span style="font-family: Arial, Helvetica, sans-serif;">  笔者最近使用Eclipse开发Android移动应用app,其实有一个功能是使用Android系统自带的WebView控件加载Web页面。开发很顺利,浏览也很正常。不过有个比较特殊的一点就是加载的Web页面中有声音或者视频。在包括WebView的Activity被Finish之后。声音或者视频仍然在后台播放,声音也不停止。再一次打开Activity之后,会重复的播放声音或者视频。</span>

  此问题绝对是不能够容忍的,于是上网搜索,这一搜索不要紧,原来遇到此问题的网友还不止笔者一人。查了一番之后发现,原来此问题应该归属于Android的bug,不太好修改。对于包含视频的网页,可以下面的方法解决:

protected void onPause() {
    super.onPause();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
         webView.onPause(); // 暂停网页中正在播放的视频
    }
}

但是此代码对于声音是无能为力。在网上搜索了很长时间,解决办法也很多,如:

web.pauseTimers();
web.stopLoading();
web.loadData("<a></a>", "text/html", "utf-8");
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "pause");
mContext.sendBroadcast(i);
web.loadData("about:blank");

以上方法,经过笔者测试,均不好用。

  后来经过多次测试,发现一个规律,就是在finish之前,Activity被重新载的页面地址是啥,下次打开之后,还显示什么页面(因为笔者使用:web.loadData("about:blank");方法测试时,发现下次打开时,显示的是空白页面,开始以为是页面没有加载成功,后来无意中灵机一动,会不会是关闭之前加载的页面,下次打开时还是加载哪个呢?)。后来测试了一下,关闭之前加载了一下百度页面,发现下次打开时,还真是显示的百度百度页面。那就将错就错,直接重新加载当前页面地址,不就ok了吗。一试,还真可以。声音或者视频停止了,下次打开,页面也能够正常加载了。真是得来全不废功夫。

解决办法如下:

    @Override
    protected void onPause ()
    {
        m_WebView.reload ();

        super.onPause ();
    }

m_WebView为Activity中的WebView控件。

时间: 2024-10-13 06:12:00

Android使用WebView浏览有声音或者视频的网页,关闭WebView之后,声音或者视频不停止的解决办法的相关文章

android NDK开发编译C++文件出现Type &#39;jint&#39; could not be resolved和Unresolved inclusion: &lt;jni.h&gt;的解决办法

今天在编译android NDK工程的时候,在jni文件夹下的cpp文件中报了一大堆错误,诸如:Unresolved inclusion: <jni.h>.Type 'jint' could not be resolved.Type 'jintArray' could not be resolved等,根据经验,这样的错误肯定是没有包含相应的头文件导致的. 解决方案: 选中工程,右键->Properties,点击C/C++ General展开,点击Path and Symbols,在右边

Android 使用WebView浏览有声音或者视频的网页,关闭WebView之后,声音或者视频不停止的解决办法

笔者最近使用Eclipse开发Android移动应用app,其实有一个功能是使用Android系统自带的WebView控件加载Web页面.开发很顺利,浏览也很正常.不过有个比较特殊的一点就是加载的Web页面中有声音或者视频.在包括WebView的Activity被Finish之后.声音或者视频仍然在后台播放,声音也不停止.再一次打开Activity之后,会重复的播放声音或者视频. 此问题绝对是不能够容忍的,于是上网搜索,这一搜索不要紧,原来遇到此问题的网友还不止笔者一人.查了一番之后发现,原来此

问题:webservice浏览后 无法输入参数;结果:调试Web Service时不能输入参数的解决办法

使用.NET 开发Web Service,有一个很方便的功能就是可以通过IE直接测试Web Service.当你的Web Service的参数都是元数据类型,那么只要你使用IE浏览Web Service就可以页面的输入框中输入必需的参数,点击调用,即可完成Web Service的测试调用.方便! 但是,在有些情况下,虽然我们开发的Web Service都使用元数据类型的参数,为什么死活都无法直接调用测试呢?点击方法链接也只是出现SOAP消息的格式定义?原来这个问题一直都没有解 决,google一

android 开发中遇到错误及解决办法总结

新手总结的开发中所遇到错误及解决办法,如有不对,欢迎指正,如有更好的解决办法,也请不吝赐教. 一.dialog.show()引起的android.view.WindowManager$BadTokenException错误 错误日志 android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running?

Android 自定义Gallery浏览图片

之前写的<Android ImageSwitcher和Gallery的使用>一文中提到我在教室一下午为实现那个效果找各种资料.期间在网上找了一个个人觉得比较不错的效果,现在贴图上来: 其实这个效果使用的知识点就是图像的获取.创建.缩放.旋转.Matrix类.Canvas类等,另外就是自定义的Gallery控件. 相信大家都期待马上上代码了吧,嘻嘻.(注释比较多,相信大家都能看懂.) main.xml: <?xml version="1.0" encoding=&quo

Android音频文件浏览+音频播放

该Demo运行后,会显示所有你sd卡上的音乐文件列表, 并可以点击列表选择某一首歌曲进行播放. 运行效果: 点击download出现: 然后点击歌曲调用系统播放器播放. 源代码: activity_audio_browser.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tool

用OpenCV制作视频控制播放器(无声音)

申明:OpenCV是计算机视觉库,所以用在图片或视频处理上,故播放的视频暂时没有声音 软件:用OpenCV制作视频控制播放器(无声音) 功能说明:新建播放窗口,添加进度条可以拖动视频播放. 流程图: 功能说明: 1. 新建进度条 cvCreatTrackbar("","",&,frames,callback) 2.获取总帧数 cvGetCaptureProperty(&,id) double cvGetCaptureProperty( CvCaptu

HTML5-video(播放暂停视频;打开关闭声音;进度条)

<!DOCTYPE html> <html> <head> <title>HTML5-video(播放暂停视频:打开关闭声音:进度条)</title> <meta charset="utf-8"/> </head> <body> <video id="video1" controls="controls" width="400px&qu

Android 视频播放器切换到下个视频时残留上个视频画面的解决办法

最近在做一个Android视频播放器,遇到一个问题:切换到下一个视频时,中间会停留上一个视频的残存画面. 这是怎么回事? 我在网上找了很多资料,终于找到了原因:我是用自定义一个surfaceview来显示画面的,切换视频时并没有将surfaceview显示的 内容做处理. 怎么解决? 知道原因,那就很好解决了. 首先,视频切换时,不再显示视频,及播放器不显示视频内容. 我找到了我代码中的这个方法:mVideoView.setRender(0); public void setRender(int