У меня есть приложение для Android для просмотра различных образовательных материалов. Некоторые из них являются веб-контентом, а другие нет. Одним из типов контента является видео. Они размещены на сервере, поэтому лучше всего получить к ним доступ через оболочку html5. Это прекрасно работает, если видео просматривается сразу. Однако, если вместо этого открывается интерактивное веб-приложение, а потом открывается видео, оно не воспроизводится.
Используя chrome: // inspect / devices, я обнаружил, что в первый раз, когда все работает, я могу проверить все нормально. Во второй раз он дает мне 404. Он использует один и тот же URL оба раза.
Общая идея заключается в динамической загрузке видео на статическую страницу. Это работает, однако, чтобы убедиться, что это не то, что ломает, я удалил javascript и жестко запрограммировал URL видео.
Я пробовал несколько разных решений для проблем с видео HTML5, включая использование проекта VideoEnabledWebView (https://github.com/cprcrack/VideoEnabledWebView).
VideoFullScreenActivity:
private final String FILE_VIDEO_PLAYER_PATH = "http://10.0.0.10/shared/player.html";
mWV = (VideoEnabledWebView) findViewById(R.id.video_full);
mWV.addJavascriptInterface(new SimpleAndroidJavaScriptInterface(this), "android");
mWV.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.e("VideoFullScreen", "Error: " + errorCode + ", desc: " + description);
}
});
mWV.setWebChromeClient(new VideoEnabledWebChromeClient(){
@Override
public void onProgressChanged(WebView view, int progress) {
if(progress == 100) {
Log.d("VideoFullScreen", "done loading");
}
}
});
mWV.loadUrl(FILE_VIDEO_PLAYER_PATH);
player.html:
<!DOCTYPE html>
<html>
<head>
<title>Streaming player</title>
<style>
video{
width:100%;
height:100%;
padding-top: 1%;
}
body{
background-color:#1c1b2f;
}
</style>
</head>
<body>
<video id="videoPlayer2" controls><source src="content_12.mp4" type="video/mp4"></video>
</body>
</html>
Я ожидаю, что видео будет воспроизводиться также во второй раз, но после открытия другого WebView, который загружает этот контент: https://phet.colorado.edu/en/simulation/fraction-matcher, видео больше не воспроизводится. Вывод logcat не содержит ошибок и показывает «готово к загрузке».