Воспроизведение mp4-видео в webview с помощью html5 в android
Я пытаюсь воспроизвести mp4-видео в webView с помощью HTML5 в Android, но, к сожалению, он не работает, так может кто-нибудь мне помочь, как я могу это сделать?
Вот мой код
HTML с именем new2.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>
Ответы
Ответ 1
Вам нужно вызвать свой файл через локальный файл хоста://localhost/- иначе ваш телефон не узнает, что вы просите разрешения. Используя ваш браузер без локального хостинга, вы отскакиваете от спутника и не можете вернуть его в ре-арену.
Вы получаете элементы управления для отображения, потому что они поступают из общедоступной html-папки, но ваш источник (видео) не делает.
Ответ 2
Из этого блога в нем говорится, что есть два шага:
- Создайте новый класс, который расширяет ContentProvider и переопределяет по существу 1 метод openFile. Метод onCreate может быть пустым, возвращая true, а остальное может просто переместить UnsupportedOperationException.
- Добавить запись поставщика в AndroidManifest.xml.
Эта страница показывает, как это сделать, а также следующее:
Шаг 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
надеюсь, что это поможет.
Ответ 3
Что произойдет, если вы измените "/sdcard/Download/video.mp4" на "файл:///sdcard/Download/video.mp4"? Я имею в виду часть html:
<video width="365" height="200" src="file:///sdcard/Download/video.mp4" controls autobuffer></video>
Я не смог открыть html-страницу в пользовательском веб-приложении. Однако я заметил, что без добавления файла:///видео не будет воспроизводиться в моем браузере Android. (В моем случае, добавив "файл:///", потребовалось некоторое время, прежде чем загрузка начнется.)
Ответ 4
<video width="365" height="200" src="video.mp4" controls autobuffer></video>
а video.mp4 должен находиться в папке с вашими ресурсами, в том же месте, где вы помещаете свой new2.html