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"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM