2013-04-15 78 views
1

我已經看到了這個問題的實例之前問過,但我要麼不能讓他們的工作還是不明白他們..我如何嵌入HTML5視頻到網頁視圖

我已經確定設置我的WebView到WebChromeClient並在清單文件中啓用硬件加速。我正在將已編譯的應用程序發送給三星Galaxy Tab GT-P1000。結果是視頻元素加載但文件無法播放。這個html文件在我的電腦上以chrome的形式運行。

我對ADT沒有太多的經驗,所以如果你可以儘可能詳細地回答你的答案,那將是非常棒的!

這裏是我的html代碼..

<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <script type="text/javascript"></script> 
    </head> 
    <body> 
     <div id="video"> 
      <video id="vid" height="240" width="360" preload controls> 
       <source src="ljmuvideo.mp4" type="video/mp4"> 
     </video> 
     </div> 
     <script> 
      var video = document.getElementById('vid'); 
      video.addEventListener('click',function(){ 
      video.play(); 
      },false); 
     </script> 
    </body> 
</html> 

這裏是我的MainActivity.java

package com.ljmu.sltwebview; 

import android.os.Bundle; 
import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.WindowManager; 
import android.webkit.WebChromeClient; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class MainActivity extends Activity { 

    @SuppressLint("SetJavaScriptEnabled") @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     WebView mywebview = (WebView) findViewById(R.id.webview); 
     mywebview.loadUrl("file:///android_asset/html5vid.html"); 
     mywebview.getSettings().setUseWideViewPort(true); 
     WebSettings webSettings = mywebview.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     webSettings.setBuiltInZoomControls(true); 
     mywebview.setWebChromeClient(new WebChromeClient()); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

這裏是我的清單文件

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.ljmu.sltwebview" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:allowBackup="true" 
     android:hardwareAccelerated="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.ljmu.sltwebview.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 
+0

它工作,如果你從一個url加載本地存儲 - 至少有助於縮小如果問題是視頻的webview設置或交易與當地資產。猜猜我應該嘗試調整這[https://gist.github.com/Offbeatmammal/3718414]使用本地資產 – Offbeatmammal

+0

好吧,我很難過。當資產位於資產文件夾中時無法播放它。閱讀一些有關壓縮是一個問題的評論,但無法找到一個簡單的方法。懷疑你可能需要在播放之前將視頻複製到SD卡 – Offbeatmammal

+0

感謝您爲我研究這個問題,我將不得不用什麼明確的路徑指向SD卡? –

回答

1

因爲它不會讓你從資產文件夾播放電影,您需要將視頻(併爲了方便其他資產)複製到SD卡。

雖然您需要添加代碼來創建輸出目錄(也可以從那裏的註釋),但是這個帖子有一個很好的示例可以做到這一點How to copy files from 'assets' folder to sdcard?。您可能還想檢查文件是否存在,並避免在不需要時複製它們

移動HTML頁面後,您可以通過以下文件在webview中引用它:/// sdcard/{myapp} /default.html,然後路徑到資產將是相對於文件

+0

謝謝,我會試試這個並回復你。 –

+0

我試過這個,它沒有工作我也嘗試在遠程服務器上託管視頻,並更改HTML文件中的網址,並沒有工作。 –

+0

是否在清單中啓用了硬件加速?對於一個webview播放視頻似乎很關鍵 - 看到樣品在gist.github.com/Offbeatmammal/3718414 – Offbeatmammal