zoukankan      html  css  js  c++  java
  • Android利用WebView开发browser中flash无法播放的问题

    使用系统自带浏览器可以成功播放flash,可是利用自己开发的就无法播放。

    代码如下:
    browser = (WebView) findViewById(R.id.webview);
    browser.getSettings().setJavaScriptEnabled(true);
    browser.getSettings().setPluginsEnabled(true);
    browser.getSettings().setAllowFileAccess(true);
    browser.getSettings().setPluginsEnabled(true);
    browser.getSettings().setPluginState(PluginState.ON);
    // browser.getSettings().setPluginsPath("/data/data/" + getPackageName() + "/app_plugins/"); // 注意
    browser.loadUrl(url);

    flash无法加载最先想到的应该是没有安装最新Adobe flash player或者无法读取其plugin路径。
    将Adobe flash player更新至最新发布支持Android 4.0的最新版(可到Google Play下载安装最新版),仍然无法解决问题。
    会不会是无法读取plugin的路径,查找android developers中WebSettings对象的用法,发现有一个方法:setPluginsPath()可以设定plugin路径。
    但是这个方法已经deprecated掉了。还有如下的解释:
    This method is no longer used as plugins are loaded from their own APK via the system's package manager。
    这样无法执行plugin要怎么样处理。
    去网上找答案,发现有一个解决的办法。是因为Android 3.0以后,播放flash需要硬件加速,在AndroidManifest中的<Activity ..>下添加一句:
    android:hardwareAccelerated="true"
    可是我添加之后仍然无法播放。继续在网上找,发现另一个方法,是说加载的时候Adobe's Flash Player在WebView中创建了一个SurfaceView,
    在SurfaceView显示和Flash加载之间有一个延迟,导致flash无法正常加载。作者还给出了解决问题的代码,网址如下:
    http://stackoverflow.com/questions/5095977/screen-blinking-when-using-a-webview-with-flash
    按照上面网址说的修改之后,仍然无法显示,流泪阿。。。。。。。。。
    继续在网上查找,众说纷纭,还有种说法是硬件cpu架构非x86的无法播放,如果真是硬件问题那就彻底绝望了。
    干脆自己写个最简单的网页显示,如果真不行也好尽快给老板汇报,意外的是,我自己写的竟然可以播放!!!!!!!!
    信心回复,肯定是程式或者配置文件的问题。
    将所有无关程式注释掉,照常无法显示。再将不明白的配置文件中的内容注释掉,找到原因!
    在AndroidManifest中有一个<supports-screens>标签,其中有一项:
    android:anyDensity="false"
    一个和位图操作有关的设定,默认为true,建议不要设定,除非要直接操作位图。
    至此,问题暂时解决,解决方法:
    添加android:hardwareAccelerated="true"
    去掉android:anyDensity="false"

  • 相关阅读:
    day7 面向对象 静态方法 类方法 属性方法 类的特殊成员方法 元类 反射 异常处理
    day6 面向对象 封装 继承 多态 类与实例在内存中的关系 经典类和新式类
    day5 time datetime random os sys shutil json pickle shelve xml configparser hashlib subprocess logging re正则 python计算器
    kafka常用操作命令
    linux基础
    django学习1——初识web应用程序
    mysql数据库(三)——pymysql模块
    mysql数据库(二)——表的查询
    mysql数据库(一)
    Python常用模块——re模块
  • 原文地址:https://www.cnblogs.com/sipher/p/2468028.html
Copyright © 2011-2022 走看看