2011-02-14 61 views
4

我裝在SD卡本地HTML,並在這個網站我用標籤:如何使用android在webview中播放視頻?

<video id="myvideo" controls width="120" height="60" poster="img/img01.jpg" src="video/01.mp4"></video> 

,然後我發現我沒裝這個網站,當我關閉標籤:,在HTML工作正常,並且我在我的android avd(2.2)中測試了這個?

+1

此[鏈接](http://stackoverflow.com/questions/3815090/webview-and-html5-video)將幫助你解決你issue.But仍然有它提到的一些問題在鏈接中。 – 2012-05-17 09:47:23

回答

1

據說這是在你已經在使用2.X版本進行工作。但doc表示標籤將在瀏覽器全屏顯示時生效。

可能性是有,你的網頁流量也將支持它,但它需要全屏幕。 試試這個。 (我沒有試過,雖然)

編輯:爲了使視圖去全屏,你可以試試這個:

所有的
requestWindowFeature(Window.FEATURE_NO_TITLE); 
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 
+0

謝謝!但如何使瀏覽器全屏?現在我已加載HTML頁面太大,我必須控制使用滾動條的時候我想看到所有的頁面,以及如何加載htnl頁面自動調整到我的web視圖,使web視圖全屏? – jin 2011-02-14 08:55:30

+0

見使其全屏 – 2011-02-14 09:32:35

8

首先關心的編碼。這裏有一個article with a working example和一些編碼Android Webkit視頻的指南。

然後......當我不得不面對這個問題,我研究了一下,發現一些有用的答案。基本上,你必須打開視頻的原生瀏覽器確實

public class InredisChromeClient extends WebChromeClient implements OnCompletionListener, OnErrorListener { 
    private InterfazWebInredis interfazWeb; // Use Your WebView instance instead 

    private VideoView mCustomVideoView; 

    private LinearLayout mContentView; 
    private FrameLayout mCustomViewContainer; 
    private WebChromeClient.CustomViewCallback mCustomViewCallback; 
    private LinearLayout mErrorConsoleContainer; 
    static final FrameLayout.LayoutParams COVER_SCREEN_GRAVITY_CENTER = new FrameLayout.LayoutParams(
      ViewGroup.LayoutParams.FILL_PARENT, 
      ViewGroup.LayoutParams.FILL_PARENT, Gravity.CENTER); 

    public InredisChromeClient(InterfazWebInredis iwi) { 
     super(); 
     this.interfazWeb = iwi; 
    } 

    public void onShowCustomView(View view, CustomViewCallback callback) { 
     // super.onShowCustomView(view, callback); 
     if (view instanceof FrameLayout) { 
      mCustomViewContainer = (FrameLayout) view; 
      mCustomViewCallback = callback; 
      mContentView = (LinearLayout) interfazWeb.findViewById(R.id.mainContainer); 
      if (mCustomViewContainer.getFocusedChild() instanceof VideoView) { 
       mCustomVideoView = (VideoView) mCustomViewContainer.getFocusedChild(); 
       // frame.removeView(video); 
       mContentView.setVisibility(View.GONE); 
       mCustomViewContainer.setVisibility(View.VISIBLE); 
       interfazWeb.setContentView(mCustomViewContainer); 
       mCustomVideoView.setOnCompletionListener(this); 
       mCustomVideoView.setOnErrorListener(this); 
       mCustomVideoView.start(); 
      } 
     } 
    } 

    public void onHideCustomView() { 
     if (mCustomVideoView == null) 
      return; 
     // Hide the custom view. 
     mCustomVideoView.setVisibility(View.GONE); 
     // Remove the custom view from its container. 
     mCustomViewContainer.removeView(mCustomVideoView); 
     mCustomVideoView = null; 
     mCustomViewContainer.setVisibility(View.GONE); 
     mCustomViewCallback.onCustomViewHidden(); 
     // Show the content view. 
     mContentView.setVisibility(View.VISIBLE); 
    } 

    @Override 
    public void onCompletion(MediaPlayer mp) { 
     mp.stop(); 
     mCustomViewContainer.setVisibility(View.GONE); 
     onHideCustomView(); 
     interfazWeb.setContentView(mContentView); 
    } 

    @Override 
    public boolean onError(MediaPlayer mp, int what, int extra) { 
     interfazWeb.setContentView(R.layout.main); 
     return true; 
    } 
} 

所以順便說一下,這個代碼是多少啓發的android project source code of the browser

和好,這種行爲是打開視頻全屏。我不知道是否可以在網頁中以自己的框架播放視頻。但是這個解決方案對我來說是個訣竅,我也希望能爲你效勞。

問候

相關問題