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控件。

  • 相关阅读:
    HDU 3416 Marriage Match IV(SPFA+最大流)
    asp.net一些很酷很实用的.Net技巧
    asp.net部分控件使用和开发技巧总结
    ASP_NET Global_asax详解
    asp.net 多字段模糊查询代码
    Asp.net中防止用户多次登录的方法
    SQL Server 事务、异常和游标
    有关Cookie
    asp.net 连接sql server 2005 用户 'sa' 登录失败。asp.net开发第一步连接的细节问题
    asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/7886469.html
Copyright © 2011-2022 走看看