2011-02-14 36 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

和好,这种行为是打开视频全屏。我不知道是否可以在网页中以自己的框架播放视频。但是这个解决方案对我来说是个诀窍,我也希望能为你效劳。

问候

相关问题