2014-02-13 2 views
1

Я знаю, что есть много старых обсуждений об этом, но я разрабатываю для новых устройств.Android - play html5 <video> в html-коде

Я хочу использовать WebView для отображения видео html5 в видео теге. Я хочу использовать это для устройств Android 4.0 или даже 4.1+.

Я не хочу много менять код 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> 

Main-файл:

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

ответ

0

набор это в meanifeast.xml

<application android:hardwareAccelerated="true"> 

hardwareAccelerated работает в версии 3.0. поэтому вы можете воспроизводить видео в WebView.

см это android docs

+0

Я добавил это, но это не играет видео. Я попробовал этот пример: http: //broken-links.com/tests/video/ http://www.broken-links.com/2009/10/06/building-html5-video-controls-with-javascript/ – ButterBeast

1

Я начал отработку https://code.google.com/p/html5webview/

видео там работает. Убедитесь, что ваше видео совместимо с android

+0

Как я могу проверить, совместим ли он? Если он работает в браузере по умолчанию для Android, он совместим? – ButterBeast

+0

см. Http://www.broken-links.com/2010/07/08/making-html5-video-work-on-android-phones/, и да, если он работает в браузере по умолчанию, он также должен работать внутри webview , Я лично придерживаюсь .mp4. Не было ни одного из тех, кто не работал – user3274355

+0

Это решение работает, но пока я попытаюсь найти более простое решение. – ButterBeast

1

Ниже приведен фрагмент приложения, которое у меня есть для Android API15 и выше, которое воспроизводит поддерживаемые типы видео (.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"); 
} 
} 
+0

Он по-прежнему не работает: http://www.broken-links.com/tests/video/ – ButterBeast

+0

Я обновил код, который у меня есть, и он не работает. – ButterBeast

+0

проблема не в видео, кажется, что эта страница.Если вы попробуете отредактированный код выше, который теперь ссылается на встроенный HTML-код и указывает на ресурс m4v со страницы со сломанными ссылками, он должен сыграть – Offbeatmammal

Смежные вопросы