setting.setPluginsEnabled(true); (從API 11 支持,可以不加)
這個從而播放視頻,但是最新官方SDK說這個方法要放棄了,推薦使用
setting.setPluginState(PluginState.ON);(從API 11 支持,可以不加)
目前看來這兩種方法都可以,但是webview的頁面都finish了居然還能聽到視頻播放的聲音,於是有查了下發現webview的
onResume方法可以繼續播放,
onPause可以暫停播放,
但是這兩個方法都是在Added in API level 11添加的,所以需要用反射來完成。
停止播放:在頁面的onPause方法中使用:
webView.getClass().getMethod("onPause").invoke(webView,(Object[])null);(低版本測試正常)
繼續播放:在頁面的onResume方法中使用:
webView.getClass().getMethod("onResume").invoke(webView,(Object[])null);(低版本測試正常)
這樣就可以控制視頻的暫停和繼續播放了。
另外說一點:
webView.resumeTimers()(不靠譜)
webView.pauseTimers();(不靠譜)
這兩個方法有延遲,而且第二次再加載webview以后會出現上次播放的視頻還會繼續在播放,但是只能聽到聲音,所以個人感覺不靠譜,系統的瀏覽器估計是用了這個方法,按返回件關閉瀏覽器后都還能聽到聲音。
無法根據瀏覽器居中顯示內容這個問題只要設置下面兩個熟悉即可:
setting.setLoadWithOverviewMode(true);
setting.setUseWideViewPort(true);
繼續研究:
同樣的代碼,經過在Android4.0+的設備上測試后發現,還是不能播放視頻,於是繼續添加了如下解決方法:
1.在webView的Activity配置里面加上:
android:hardwareAccelerated="true"
(官方文檔解釋說:
Hardware acceleration is enabled by default if your Target API level is >=14
http://developer.android.com/guide/topics/graphics/hardware-accel.html
所以只需要修改下Manifest文件,不需要設置這個屬性也可以)
2.必須添加這句代碼,沒整明白為什么,但是加了這個就能播放
webView.setWebChromeClient(new WebChromeClient()); (一定要加)
這兩步就可以播放了,有人說在application的配置里面也要加上:android:hardwareAccelerated="true",開始的時候我也加了,但是后來發現去掉這個也一樣可以播放flash
但是現在的麻煩是視頻不能全屏播放,只要點擊了全屏按鈕后,再次點擊播放和暫停按鈕以后,視頻不會有任何反應,無法繼續播放了。
網上查了下相關解決方法:
http://www.techfreestyle.com/fixed-android-4-0-full-screen-flash-problem-in-webview 這種方法測試過了 不能解決問題。
https://github.com/android/platform_packages_apps_browser/blob/master/src/com/android/browser/BaseUi.java 這個貌似源碼,由於代碼較多,所以還沒研究。