Android: Могу ли я настроить другой видеоплеер, который будет использоваться тегом <video>? - PullRequest
1 голос
/ 27 мая 2020

Я хочу иметь приложение HTML5 со встроенным видеоплеером.

Обычно я просто использую тег <video> там, где это необходимо. Но мне нужно указать android использовать другой проигрыватель, отличный от того, который используется по умолчанию для этого тега. Есть ли способ заархивировать это?

Могу я, например, использовать самокомпилированный ExoPlayer? Или я застрял в том, что скрыто за тегом <video>?

Ответы [ 2 ]

1 голос
/ 05 июня 2020

Ваше веб-представление может взаимодействовать с вашим кодом Java / Kotlin через addJavascriptInterface .

Начните с создания класса, который позже вы установите как WebView JavaScript интерфейс. Аннотируйте методы, которые вы хотите предоставить JavaScript, с помощью @JavascriptInterface. Вы также можете добавить аргументы к этим методам:

class MyJsInterface() {
    @JavascriptInterface
    fun onShowNativePlayer() {
        // Add your logic to show the native player instead of the HTML5.
    }
}

Создайте экземпляр указанного выше класса и передайте его своему WebView:

myWebView.addJavascriptInterface(MyJsInterface(), "android_js_interface")

И, наконец, вот как вы можете запускать открытые методы Java / Kotlin из вашего JavaScript кода:

// This value should match the second argument that you passed in addJavascriptInterface. 
var ANDROID_JS_INTERFACE = "android_js_interface"
...
// Call your Java/Kotlin method.
window[ANDROID_JS_INTERFACE].onShowNativePlayer()

Бонус:

Вы также можете добиться обратного (ie. вызов JavaScript методов из вашего кода Java / Kotlin):

myWebView.evaluateJavascript("myJsFunc()", null)

Где myJsFunc() - это функция, которую вы определили в своем JavaScript коде:

// You can also pass arguments.
window.myJsFunc = function() {
    // Do something here.
}
0 голосов
/ 04 июня 2020

Думаю, одним из способов было бы связать мой собственный скомпилированный браузер, в котором был заменен видеоплеер. Но здесь это было бы чересчур.

Если ничего больше не появится, я выберу в качестве компромисса использование фрагмента видео в фоновом режиме с прозрачным HTML5 приложением впереди.

...