2011-03-15 54 views
1

这是我的HTML文件...使用HTML5在android webview上播放视频的问题?

<html> 
<head> Demo </head> 
<body> 
    <h1>HTML 5 - Video Demo</h1> 
    <video src="http://www.abc.com/a.m4v" controls="true"> 
    </video> 

    <script> 
    document.getElementById('video'); 
    </script> 
</body> 

和我使用的Java验证码...

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.setContentView(R.layout.viewr); 

    WebView web = (WebView) findViewById(R.id.webview); 
    web. getSettings().setJavaScriptEnabled (true); 
    web.getSettings().setAllowFileAccess(true); 
    web. loadUrl ("file:///android_asset/VidDemo.htm");    
    web.setWebViewClient(new MyWebViewClient()); 

} 

final class MyWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (url.endsWith(".3gp")) { 
      Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url)); 
      view.getContext().startActivity(intent); 
      return true; 
     } else { 
      return super.shouldOverrideUrlLoading(view, url); 
     } 
    } 
} 

但视频没有显示在屏幕上,也不能发挥。请建议我该怎么办...

+0

嗯,我认为这是可以给你[http://stackoverflow.com/questions/1711078/有用HTML5的视频元素上的Android] [1] [1]:http://stackoverflow.com/questions/1711078/html5-video-element-on-android – Android 2011-08-17 11:14:12

回答

1

这是因为Android的浏览器没有任何视频编解码器。

不知何故,您必须触发原生视频应用才能点击打开。我正在寻找一种方法来做到这一点。

+0

要跟进,解析在您的WebView内发出的请求,并创建一个意图打开任何视频网址的视频播放器。 – 2012-04-22 02:27:54

0

它的工作原理

webView.getSettings().setJavaScriptEnabled(true); 
      webView.getSettings().setJavaScriptCanOpenWindowsAutomatically (false); 
      webView.getSettings().setPluginsEnabled (true); 
      webView.getSettings().setSupportMultipleWindows (false); 
      webView.getSettings().setSupportZoom (false); 
      webView.setVerticalScrollBarEnabled (false); 
      webView.setHorizontalScrollBarEnabled (false); 
      webView.getSettings().setFixedFontFamily("file:///android_asset/fonts/CamMob.ttf"); 
      webView.getSettings().setDefaultFontSize(fontSize + 5); 
      webView.setWebViewClient(new MyWebViewClient()); 
      webView.setWebChromeClient(chromeClient); 
      webView.getSettings().setPluginState(WebSettings.PluginState.ON); 

private class MyWebViewClient extends WebViewClient { 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 

     return super.shouldOverrideUrlLoading(view, url); 
    } 
} 

私人WebChromeClient chromeClient =新WebChromeClient(){

@Override 
    public void onShowCustomView(View view, CustomViewCallback callback) { 
     super.onShowCustomView(view, callback); 
     if(view instanceof FrameLayout){ 
      FrameLayout frame = (FrameLayout)view; 
      if(frame.getFocusedChild()instanceof VideoView){ 
      VideoView video = (VideoView)frame.getFocusedChild(); 
       frame.removeView(video); 
          video.start(); 

      } 
     } 
    } 

};