2011-03-15 55 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(); 

      } 
     } 
    } 

};