【轉】Android HTML5 Video視頻標籤自動播放與自動全屏問題解決

           爲了解決 HTML5Video視頻標籤自動播放與全屏問題,在網上找了不少相關資料,網上也不少關於此問題解決方法,但幾乎都不能解決問題,特別對各大視頻網站傳回來的html5網頁視頻自動播放與全屏問題,我是這樣解決的:


 
  1. webview.setWebChromeClient(new WebChromeClient() {  
  2.   
  3.   
  4.   
  5.   
  6.             public void onShowCustomView(View view, CustomViewCallback callback) {  
  7.             Log.e("Media", "onShowCustomView ............ ");  
  8.   
  9.   
  10.                 if (myCallback != null) {  
  11.                       myCallback.onCustomViewHidden();  
  12.                       myCallback = null ;  
  13.                       Log.e("Media", "myCallback.onCustomViewHidden()...");  
  14.                       return;  
  15.                }  
  16.   
  17.   
  18.                 long id = Thread.currentThread().getId();  
  19.               
  20.                ViewGroup parent = (ViewGroup) webview.getParent();  
  21.                String s = parent.getClass().getName();  
  22.                Log.v("WidgetChromeClient", "rong debug Ex: " + s);  
  23.                parent.removeView( webview);  
  24.                parent.addView(view);  
  25.                myView = view;  
  26.                myCallback = callback;  
  27.   
  28.   
  29.                   
  30.                   
  31.         }  
  32.   
  33.   
  34.          private View myView = null;  
  35.          private CustomViewCallback myCallback = null;  
  36.           
  37.           
  38.          public void onHideCustomView() {  
  39.                  
  40.                 long id = Thread.currentThread().getId();  
  41.                 Log.v("Media", "onrong debug in hideCustom Ex: " + id);  
  42.                  
  43.                  
  44.                 if (myView != null) {  
  45.                        
  46.                       if (myCallback != null) {  
  47.                              myCallback.onCustomViewHidden();  
  48.                              myCallback = null ;  
  49.                      }  
  50.                        
  51.                      ViewGroup parent = (ViewGroup) myView.getParent();  
  52.                      parent.removeView( myView);  
  53.                      parent.addView(webview);  
  54.                      myView = null;  
  55.                }  
  56.          }  
  57.   
  58.   
  59. });  


這段代碼網上不少地方能找到的,但這是實現全屏播放的前提,一旦觸發全屏事件,系統就會調用onShowCustomView方法
實現自動播放功能,就是在網絡加載完成後,再延時一些時間如1s後,執行這JAVA腳本

 
  1. String js="javascript: var v=document.getElementsByTagName('video')[0]; "  
  2.          +"v.play(); ";  
  3. webview.loadUrl(js);  


這樣就能夠自動開始播放了
要實現讓它自動全屏播放,能夠執行這JAVA腳本:

 
  1. String js="javascript: var v=document.getElementsByTagName('video')[0]; "+"v.webkitEnterFullscreen(); ";  
  2. webview.loadUrl(js);  


注意實現全屏播放要在視頻開始播放後,才能調用,不然可能會現異常


若是你想知道視頻何時開始播放,就是獲得視頻開始播放事件,方法以下:
先在代碼上定義這樣接口
[java]  view plain copy
 
  1. private final class DemoJavaScriptInterface  
  2. {  
  3.               DemoJavaScriptInterface(){}  
  4.   
  5.   
  6.               public void clickonAndroid(){  
  7.                     
  8.                      
  9.                     Toast.makeText(getApplicationContext(), "視頻開始播放...",Toast.LENGTH_SHORT).show();                 
  10.   
  11.   
  12.                       
  13.               }  
  14.               public void endonAndroid(){  
  15.                     
  16.                      
  17.                     Toast.makeText(getApplicationContext(), "視頻結束",Toast.LENGTH_SHORT).show();                  
  18.   
  19.   
  20.                       
  21.               }  
  22. }  


 
  1. webview.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");  


而後在在視頻開始播放以前,執行這JAVA腳本
[java]  view plain copy
 
  1. String js="javascript: var v=document.getElementsByTagName('video')[0]; "  
  2.      +"v.addEventListener('playing', function() { window.demo.clickonAndroid(); }, true); ";  
  3. webview.loadUrl(js);  






固然了你也能夠獲得視頻播放結束事件執行這JAVA腳本

 
  1. String js="javascript: var v=document.getElementsByTagName('video')[0]; "  
  2.      +"v.addEventListener('ended', function() { window.demo.endonAndroid(); }, true); ";  
  3. webview.loadUrl(js);  






通常在android平臺上,網絡視頻網站可能不會給你傳回Html5 Video網頁,這時候就能夠設置UserAgent,如可能設置成IPhone或IPad環境,讓它返回tml5 Video網頁

  1. webview.getSettings().setUserAgentString("Mozilla/5.0 (iPad; CPU OS 5_1 " +   
  2.                                  "like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko ) Version/5.1 " +   
  3.                                  "Mobile/9B176 Safari/7534.48.3");  
以上方法就是我在Android 網頁視頻一些心得,也許能給在你這方面開發提供幫助
相關文章
相關標籤/搜索