HTML5 видео в Android Webview разрывается после открытия другой страницы - PullRequest
0 голосов
/ 07 января 2019

У меня есть приложение для 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 не содержит ошибок и показывает «готово к загрузке».

...