android webView 無法播放視頻,無法暫停,繼續播放視頻問題,無法根據瀏覽器置中顯示內容問題

來源:互聯網
上載者:User

此次遇到一個問題就是webView無法播放視頻,查了下Google發現可以設定

setting.setPluginsEnabled(true);
這個從而播放視頻,但是最新官方SDK說這個方法要放棄了,推薦使用

setting.setPluginState(PluginState.ON);

目前看來這兩種方法都可以,但是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"

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  這個貌似源碼,由於代碼較多,所以還沒研究。

大牛路過時,說說你是怎麼解決全屏這一問題的吧,thanks。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.