2012-03-01 83 views
2

就像標題所說,我需要從資產文件夾加載視頻(.mp4)到WebView。 我試了幾件事情:將資產視頻加載到HTML5的webview - Android

//首先

String webpage = "<!doctype html><head><meta charset='utf-8'></head><body><video id='video' controls='controls' autoplay='autoplay' height=" + m.getHeight() + " width=" + m.getWidth() + "><source src='file:///android_asset/1003/landscape_1003_1_m864.mp4' /></video></body></html>"; 

wv.loadData(webpage, "text/html", "utf-8"); 

//二

加載相同的網頁,但使用使用loadURL()方法

wv.loadUrl(webpage); 

// Third

載入完全相同的網頁,但使用另一種方法

wv.loadDataWithBaseURL("file:///android_asset/", webpage,"text/html", "utf-8", null); 

我試圖改變第一個參數爲空,也該網頁,...

一切都必須動態地添加(web視圖本身的URL視頻,寬度,高度,...),所以製作XML文件不是一個選項。

我在互聯網上找到的很多解決方案是將視頻移動到原始文件夾或SD卡,但這不是一個選項(業務決策)。

如果有人能幫助我,那將會很好。

P.S.如果你可以用完全相同的東西來幫助我,但在視頻視圖中顯示所有控件(如html5視頻元素(播放,暫停,搜索欄,全屏))的視頻免費!

+0

哎@ceetn如果宇已經得到了這個正確的答案請不要發佈回答 – Zombie 2012-06-07 09:55:45

+0

對不起,這是不可能的。 – Ceetn 2012-06-08 12:57:28

+0

感謝您的回覆......並且您是否有任何關於從SD卡加載的想法? – Zombie 2012-06-09 04:04:02

回答

2

我有同樣的問題。不幸的是我沒有找到解決方案。這Instand我只是做這樣的事情:

  • 打開網站中的WebView
  • 當用戶打開該結束的.mp4我打開新的活動與視頻播放器的鏈接。
  • 傳遞網址
  • 打開視頻

    public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    
    parent = (TabLayout)this.getParent(); 
         setContentView(R.layout.XXXXXXXXXX); 
         l = (ProgressBar)findViewById(R.id.webL); 
         Resources res = getResources(); 
         mWebView = (WebView) findViewById(R.id.webview); 
         mWebView.getSettings().setJavaScriptEnabled(true);     
         mWebView.getSettings().setPluginsEnabled(true); 
         mWebView.getSettings().setSupportZoom(true); 
         mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
         mWebView.loadUrl(res.getString(R.string.XXXXXX)); 
         mWebView.getSettings().setAllowFileAccess(true); 
         mWebView.setWebViewClient(new WebViewClient() 
         { 
          @Override 
          public void onPageFinished(WebView view, String url) 
          { 
           super.onPageFinished(view, url); 
           l.setVisibility(View.INVISIBLE);       
          } 
    
          @Override 
          public void onPageStarted (WebView view, String url, Bitmap favicon) 
          { 
           super.onPageStarted(view, url, favicon); 
           l.setVisibility(View.VISIBLE); 
          } 
    
          @Override 
          public boolean shouldOverrideUrlLoading(WebView view, String url) 
          { 
           if (url.endsWith(".mp4")) 
           {       
            data.url = url; 
            Intent intent = new Intent(getApplicationContext(), VideoPlayer.class); 
            startActivity(intent); 
            return true; 
           } 
           else 
           { 
            return super.shouldOverrideUrlLoading(view, url); 
           } 
          } 
    
         }); 
    
    } 
    

..和我的視頻播放器:

public class VideoPlayer extends Activity 
{ 
private VideoView mVideoView; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    this.setContentView(R.layout.video); 
    mVideoView = (VideoView) findViewById(R.id.surface_video); 

    mVideoView.setVideoURI(Uri.parse(data.url)); 
    mVideoView.setMediaController(new MediaController(this)); 
    mVideoView.requestFocus(); 
    mVideoView.start(); 
} 
0

你可以使用下面的代碼,讓我知道如果這項工作記住android 2.2將支持html5。

webview.loadDataWithBaseURL("file:///android_asset", 

         "<video src=\"diagram1.mp4\" />", mimetype, encoding, null); 


final String mimetype = "text/html"; 
    final String encoding = "UTF-8";