Android - 在 html 代码中播放 html5 <video>

Posted

技术标签:

【中文标题】Android - 在 html 代码中播放 html5 <video>【英文标题】:Android - playing html5 <video> in html code 【发布时间】:2014-03-12 10:58:56 【问题描述】:

我知道有很多关于这个的旧讨论,但我正在开发新设备。

我想使用 WebView 在视频标签中显示 html5 视频。我想将它用于 4.0+ 甚至 4.1+ 的 android 设备。

我不想过多地更改 WebView 代码。是否可以在 WebView 中显示电影而不在顶部打开一些新视图?因为大多数答案打开了播放视频的新视图?我需要尽可能少的代码更正的简单解决方案。

欢迎任何代码或教程。

更新

清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.videoexample"
android:versionCode="1"
android:versionName="1.0" >

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

<uses-sdk
    android:minSdkVersion="15"
    android:targetSdkVersion="18" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" 
    android:hardwareAccelerated="true"
    >


    <activity
        android:name="com.example.videoexample.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>

主文件:

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebSettings;

public class MainActivity extends Activity 

    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        webView = (WebView) findViewById(R.id.webView1);

        webView.setWebChromeClient(new WebChromeClient());
        webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND);
        webView.getSettings().setjavascriptEnabled(true);

        // load the customURL with the URL of the page you want to display
        String pageURL = "http://www.vongola-restavracija-izola.si/powzyLibrary1/video.html";
        webView.loadUrl(pageURL);
    

    @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;
    

【问题讨论】:

【参考方案1】:

我开始在https://code.google.com/p/html5webview/工作

视频在那里工作。确保您的视频与 android 兼容

【讨论】:

如何测试是否兼容?如果它在android默认浏览器中工作,那么它是兼容的吗? 参见broken-links.com/2010/07/08/…,是的,如果它在默认浏览器上运行,它也应该在 webview 中运行。我个人坚持使用.mp4。没有任何不工作的人 这个解决方案有效,但现在我会尝试找到更简单的解决方案。【参考方案2】:

以下是我为 Android API15 及更高版本播放支持的视频类型的应用程序的 sn-p(.mp4 是最可靠的)。它可以提供来自 URL 的内容或内嵌创建的内容(已注释掉)。

如果这样,视频仍然无法播放,您能否在此处发布示例链接,以便我们检查它是否兼容。

清单中需要以下内容

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

<application
android:hardwareAccelerated="true" 
.... />

然后是代码:

package com.offbeatmammal.android.webview;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.RelativeLayout;

public class WebViewActivity extends Activity 

private WebView webView;

public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);

    webView = (WebView) findViewById(R.id.webView1);

    webView.setWebChromeClient(new WebChromeClient());
    webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND);
    webView.getSettings().setJavaScriptEnabled(true);

    // load the customURL with the URL of the page you want to display
    // String pageURL = "http://url/page.html";
    // webView.loadUrl(pageURL);

    String customHtml = "<html><head><title>Sample</title></head><body><video controls><source src='http://www.broken-links.com/tests/media/BigBuck.m4v'></video></body></html>";
    webView.loadData(customHtml, "text/html", "UTF-8");


【讨论】:

我更新了我拥有但不起作用的代码。 问题不是视频,似乎是那个页面。如果您尝试上面编辑的代码,它现在引用内联 HTML 并从断开的链接页面指向 m4v 资产,它应该播放 Still nothink :( 我还创建了两个网页蚂蚁尝试加载但没有成功:vongola-restavracija-izola.si/powzyLibrary1/video.html 和 vongola-restavracija-izola.si/powzyLibrary1/video1.html 我使用的是 4.0.3 android。 您在什么设备上测试?就像一个仅供参考的视频在大多数模拟器情况下都不起作用【参考方案3】:

在 meanifeast.xml 中设置

<application android:hardwareAccelerated="true">

hardwareAccelerated 工作在 3.0 以上。这样您就可以在 WebView 中播放视频。

参考这个android docs

【讨论】:

我添加了这个,但它不播放视频。我试过这个例子:broken-links.com/tests/videobroken-links.com/2009/10/06/…

以上是关于Android - 在 html 代码中播放 html5 <video>的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android phonegap 中使用 html5 videoplayer 播放视频?

android支持html5 video标签,实现在线播放吗

Android如何制作一个简易的视频播放器

Android如何制作一个简易的视频播放器

在 html iframe 内的 Android webview 上播放音频时出错

HTML5 视频自动播放无法正常工作