Управление DOM-элементами из приложения Android

Я пытаюсь получить контроль над элементами DOM Play / Pause html (в браузере, открытом на ПК) с устройства Android.

На странице HTML (в браузере Google Chrome) есть <video> тег, чтобы я мог контролировать это так:

//js code
document.querySelector("video").play();
document.querySelector("video").pause();

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

Я прочитал здесь и получил некоторое понимание, но у меня все еще есть некоторые вопросы.

  • Во-первых, так как я пишу в затмении, и он не видит нет document переменная, выдает ошибку. Итак, как можно затмить признать, что element на странице HTML, так что я могу скомпилировать и установить APK на устройстве?

  • Где мне указать URL страницы, с которой я хочу общаться? (отправить команды воспроизведения / паузы)

  • Для запуска JS внутри Java я использую Rhino. Я просмотрел примеры в документации, но все еще не уверен, что @JSFunction аннотации достаточно, чтобы объявить функцию js.

Вот мой код:

import com.alaa.chromote.util.SystemUiHider;
import com.google.android.gcm.GCMRegistrar;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.Toast;
import android.view.View.OnClickListener;

import org.mozilla.javascript.*;
import org.mozilla.javascript.annotations.*;

public class MainApplication extends Activity {
    private final static String GCM_SENDER_ID = "484514826047";
    private static final String LOG_TAG = "GetAClue::GCMIntentService";

    private Button playButton;
    private Button pauseButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main_application);

        playButton = (Button) findViewById(R.id.PlayButton);
        pauseButton = (Button) findViewById(R.id.PauseButton);

        playButton.setVisibility(View.INVISIBLE);
        pauseButton.setVisibility(View.VISIBLE);

        //connect to gcm
        GCMRegistrar.checkDevice( this );
        GCMRegistrar.checkManifest( this );
        final String regId = GCMRegistrar.getRegistrationId( this );
        if( regId.equals( "" ) ) {
            GCMRegistrar.register( this, GCM_SENDER_ID );
        }
        else {
            Log.v( LOG_TAG, "Already registered" );
        }

        Context.enter(); //start Rhino

        setupListeners();
    }

    @JSFunction
    public void play() { document.querySelector("video").play(); }

    @JSFunction
    public void pause() { document.querySelector("video").pause(); }

    private void setupListeners()
    {
        playButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                play();
            }
        });

        pauseButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                pause();
            }
        });
    }
    @Override
    protected void onStop() {
        Context.exit(); //stop Rhino
        super.onStop();
    }
}

Как мне продолжить отсюда?

1 ответ

  • Во-первых, поскольку я пишу в Eclipse, и он не видит переменную документа, он выдает ошибку. Так как же затмить распознавать этот элемент на HTML-странице, чтобы я мог скомпилировать и установить apk на устройстве?

    answer: На вашем устройстве Android вы просто передаете сообщение браузеру Chrome. Ак переменная действия, которая установлена ​​для воспроизведения или остановки. После этого приложение Chrome получит сообщение и будет действовать соответственно. Также вы можете отправить URL-адрес в качестве переменной в сообщении, если вы хотите иметь возможность воспроизводить разные URL-адреса.


  • Где мне указать URL страницы, с которой я хочу общаться? (отправить команды воспроизведения / паузы)?

    ответ: Вы уже создали нужное приложение Chrome и убедились, что оно работает? Это должно проверить с облачным сервером Google для сообщений. Этот сервер отслеживает URL для вас.


  • Для запуска JS внутри Java я использую Rhino. Я просмотрел примеры в документации, но все еще не уверен, достаточно ли аннотации @JSFunction для объявления функции js.

    ответ: Кажется, вы неправильно понимаете, что делает приложение для Android (отправляет действие воспроизведения) и что делает браузер Chrome (фактически воспроизводит фильм)


Надеюсь, мой ответ немного помог, отзывы приветствуются:)

Другие вопросы по тегам