Próbuję przejąć kontrolę nad elementami DOM DOMU Play/Pause (w przeglądarce otwartej na komputerze) z urządzenia z Androidem.Sterowanie elementami DOM z aplikacji na Androida
Na stronie html (w przeglądarce Google Chrome) istnieje <video>
tag więc mogę kontrolować to tak:
//js code
document.querySelector("video").play();
document.querySelector("video").pause();
Chcę jednak, że do uruchomienia z urządzenia z Androidem, więc używam GCM.
Przeczytałem here i uzyskałem pewien wgląd, ale wciąż mam kilka pytań.
Po pierwsze, ponieważ piszę w Eclipse, a nie widzi zmiennej
document
, produkuje błąd. Jak więc zaćmienie może rozpoznać, że na stronie html jestelement
, aby móc skompilować i zainstalować apk na urządzeniu?Gdzie mogę określić adres strony, z którą chcę się komunikować? (Wysyłanie odtwarzanie/pauza poleceń)
Aby uruchomić js wewnątrz java Używam Rhino. Przeglądałem przykłady w documentation, ale nadal nie jestem pewien, czy adnotacja
@JSFunction
wystarczy do zadeklarowania funkcji js.
Oto mój kod:
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();
}
}
Jak mogę kontynuować stąd?