Можем ли мы создать элементы управления мультимедиа в панели уведомлений для проигрывателя Web Media в приложении Android? - PullRequest
0 голосов
/ 05 октября 2019

Я создал приложение, в котором я использую веб-медиа-плеер, используя приведенный ниже код.

    WebView webView = root.findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);

    if (!b1) {
        webView.setVisibility(View.GONE);
    } else {
        webView.setVisibility(View.VISIBLE);
        String URL1 = "http://xyz.in/web-player.html";
        webView.loadUrl(URL1);
    }

Я хочу разместить медиа-контроллер на панели уведомлений, как показано ниже, возможно ли это для WebView?

enter image description here

Вот мой вид приложения -

enter image description here

1 Ответ

1 голос
/ 22 октября 2019

да, это возможно, вы в основном создаете нативные компоненты в своей панели приложений.

Затем в слушателях этих компонентов вы вызываете функцию javascript, которая управляет медиапроигрывателем media javascript.

webView.evaluateJavascript("javascript: " +
    "setvolume(\"" + 12 + "\")", 
    null)

это в основном вызвало бы теоретическую функцию javascript веб-вида, называемую "setvolume" со значением 12

, все остальное необходимо обрабатывать в javascript

, возможен и другой способ, т.е. вызов javascriptнативные функции, но это немного сложнее.

здесь ссылка для получения дополнительной информации: https://medium.com/@elye.project/making-android-interacting-with-web-app-921be14f99d8

edit:

макет, который вы, например, можете использовать:

<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:background="@color/mid_grey"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.google.android.material.bottomappbar.BottomAppBar
    android:id="@+id/bottomAppBar2"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_gravity="bottom"
    app:layout_anchorGravity="center">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
            android:id="@+id/imageView25"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:srcCompat="@drawable/pspdf__ic_sound" />

        <SeekBar
            android:id="@+id/seekBar"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:max="100"
            android:progress="25"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@id/imageView25"
            app:layout_constraintTop_toTopOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>


</com.google.android.material.bottomappbar.BottomAppBar>

В вашей деятельности у вас есть слушатель на панели поиска, поэтому при его изменении вы вызываете функцию javascript проигрывателя в веб-просмотре

   SeekBar seekBar = this.findViewById(R.id.seekBar);

    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
            webview.evaluateJavascript(...); //call the javascript function set the volume to the new value
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });

вы делаетето же самое для других компонентов, которыми вы хотите управлять через нижнюю строку

...