Как разрешить веб-просмотру доступ к онлайн-видео с помощью приложения Android Video Player? - PullRequest
0 голосов
/ 28 октября 2019

Итак, у меня есть веб-сервер, на котором есть связанное видео, у меня есть доступ к моему веб-представлению, и я могу воспроизводить видео с помощью HTML5 Player, но проблема в том, что видео должно воспроизводиться видеоприложение плеера, установленное на моем телефоне ... Как мне этого добиться?

Я попытался выполнить поиск, похоже, людям нравится использовать Youtube Video Player или HTML5 Player, а не приложение их видеопроигрывателя, поэтому я получилничего ...

Обновление

Итак, после того, как я попытался реализовать метод, предложенный @ EricHo

webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (url.contains("mp4")) {
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setDataAndType(Uri.parse(url), "video/mp4");
                    startActivity(intent);
                    return true;
                }
                return false;
            }
        });

Что я получил, так это то, что проигрыватель, который воспроизводит видео, встроен в Chrome, а не в сам видеоплеер Android Фотография 1 , кроме того, что я ожидаю, это Видео будет воспроизводитьсягалерея вместо проигрывателя Chrome

При необходимости вот мой исходный код index.html

<!DOCTYPE HTML>
<!DOCTYPE html>
<html>
<head>
    <title>video</title>
    <script type="text/javascript" src="src.js"></script>
    <link rel="stylesheet" type="text/css" href="src.css"> 
</head>
<body bgcolor="#333">
<center>
<video controls preload="metadata" style=" width:px;  height:px;">
    <source src="video-url" type="video/mp4">
</video><br />

</body>
</html>

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

Я могу ошибаться, но ваш Android-плеер по умолчанию воспроизводит видео, если оно загружено в папку tmp или другие папки на вашем телефоне. Похоже, вы можете воспроизвести связанное видео на своей странице с помощью элементов управления HTML-видео, но оно не будет воспроизводиться на вашем Android-плеере, поскольку оно не было загружено и идентифицировано как видеофайл. Вы можете создать гиперссылку на странице со ссылкой на видео в качестве URL-адреса и посмотреть, подхватит ли ее проигрыватель по умолчанию

0 голосов
/ 28 октября 2019

Один из способов - перехватить HTTP-запрос от Webview. обратитесь к этому

Затем проверьте, является ли URL-адрес запроса URL-адресом видео. если да, откройте URL с помощью Intent

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.parse(videoPath), "video/mp4");
startActivity(intent);

Редактировать: ниже приведен мой рабочий пример, когда вы нажимаете на ссылку, оканчивающуюся на «mp4», android откроет URL с медиаплеерами по умолчанию.

    webView.webViewClient = object : WebViewClient() {
        override fun shouldOverrideUrlLoading(
            view: WebView?,
            request: WebResourceRequest?
        ): Boolean {
            println("shouldOverrideUrlLoading")
            println(request?.url.toString())
            val url :String = request?.url.toString()
            if (url.endsWith("mp4")) {
                val intent = Intent(Intent.ACTION_VIEW)
                intent.setDataAndType(Uri.parse(url), "video/mp4")
                startActivity(intent)
                return true
            }
            return false
        }
    }
    val videoPath = "http://techslides.com/sample-webm-ogg-and-mp4-video-files-for-html5"
    webView.loadUrl(videoPath)

Manifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ecl.webtest">
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:usesCleartextTraffic="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
...