在android中使用html5在webview中播放mp4视频

时间:2013-05-29 12:06:20

标签: html5 video android-webview

我正在尝试在Android中使用 HTML5 webView 中播放mp4视频,但不幸的是它无法正常工作,所以任何人都可以帮助我,我该怎么办?< / p>

这是我的代码 名为new2.html

HTML 文件
<video width="365" height="200" src="/sdcard/Download/video.mp4" controls autobuffer></video>


<!--<!DOCTYPE html>
<html>
<body>

<video width="320" height="240" controls autoplay>
  <source src="/sdcard/Download/video.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>

</body>
</html>-->

Java 文件是:

public class WebActivity extends Activity {
     WebView wv;  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
         setContentView(R.layout.web_activity);  

         wv = (WebView) findViewById(R.id.webview);  
         wv.loadUrl("file:///android_asset/new2.html");
         wv.getSettings().setAllowFileAccess(true);
         wv.getSettings().setJavaScriptEnabled(true);
         wv.getSettings().setPluginsEnabled(true);
        // webview.loadUrl("file:///android_asset/new.html");
    }

}

XML 文件是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <WebView
        android:id="@+id/webview" 
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>


</LinearLayout>

4 个答案:

答案 0 :(得分:1)

您需要通过本地主机调用您的文件 - file:// localhost / - 否则您的手机将无法识别您要求的权限。通过使用没有localhost的浏览器,您正在ping一颗卫星,无法重新进行重新编辑。

您要显示控件,因为它们来自公共html文件夹,但您的来源(视频)却没有。

答案 1 :(得分:1)

this blog开始,它指出了两个步骤:

  1. 创建扩展ContentProvider的新类,并基本上覆盖1方法openFile。方法onCreate可以为空,返回true,其余可以抛出UnsupportedOperationException。
  2. 向AndroidManifest.xml添加提供者条目。
  3. This page shows如何做到这一点 - 该页面的摘要如下:

    步骤1:在AndroidManifest.xml中声明您的内容提供者:

    <provider android:name="MyDataContentProvider"
        android:authorities="com.techjini" />
                             ^^^^^^^^^^^ change this
    

    第2步:

    创建ContentProvider并实施openFile。 您所要做的就是从uri获取真实路径,打开它并返回描述符

    URI uri = URI.create("file:///data/data/com.techjini/files/myImage.jpeg");
                                  ^^^^^your path to your file    
    File file = new File(uri);
    ParcelFileDescriptor parcel =
        ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
    return parcel;
    

    您可以使用以下方法查找图像的存储位置:

    System.out.println(getFilesDir().getAbsolutePath());
    

    您现在可以加载文件:

    myWebView.loadUrl("content://com.techjini/myImage.jpeg");
                                 ^^^^^^^^^^^change to same as in manifest
    
    希望有所帮助。

答案 2 :(得分:0)

如果您将“/sdcard/Download/video.mp4”更改为“file:///sdcard/Download/video.mp4”会怎样?我的意思是html部分:

<video width="365" height="200" src="file:///sdcard/Download/video.mp4" controls autobuffer></video>

我无法在自定义网络应用中打开html页面。但是我注意到,如果没有添加“file:///”,视频将无法在我的Android浏览器中播放。 (在我的情况下,通过添加“file:///”,视频开始加载需要一些时间。)

答案 3 :(得分:0)

<video width="365" height="200" src="video.mp4" controls autobuffer></video>

并且video.mp4应该位于您的资源文件夹中,与您放置new2.html的位置相同