zoukankan      html  css  js  c++  java
  • Android 使用WebView浏览有声音或者视频的网页,关闭WebView之后,声音或者视频不停止的解决办法

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

    此问题绝对是不能够容忍的,于是上网搜索,这一搜索不要紧,原来遇到此问题的网友还不止笔者一人。查了一番之后发现,原来此问题应该归属于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控件。

  • 相关阅读:
    2.12 使用@DataProvider
    2.11 webdriver中使用 FileUtils ()
    Xcode8 添加PCH文件
    The app icon set "AppIcon" has an unassigned child告警
    Launch Image
    iOS App图标和启动画面尺寸
    iPhone屏幕尺寸、分辨率及适配
    Xcode下载失败 使用已购项目页面再试一次
    could not find developer disk image
    NSDate与 NSString 、long long类型的相互转化
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/7886469.html
Copyright © 2011-2022 走看看