2015-04-23 18 views
6

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 jest element, 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?

Odpowiedz

2
  • Po pierwsze, ponieważ piszę w Eclipse, a nie widzi zmiennej dokument, produkuje błąd. Jak więc zaćmienie może rozpoznać ten element na stronie html, aby móc skompilować i zainstalować apk na urządzeniu?

    odpowiedź: na urządzeniu z systemem Android wystarczy przekazać wiadomość do przeglądarki Chrome. A.k. zmienna akcji ustawiona do grania lub zatrzymania. Twoja aplikacja Chrome pobierze wiadomość i podejmie odpowiednie działania. Możesz także wysłać adres URL jako zmienną w wiadomości, jeśli chcesz mieć możliwość odtwarzania różnych adresów URL.


  • Gdzie mogę podać adres URL strony chcę, aby komunikować się z? (wyślij polecenia odtwarzania/wstrzymania)?

    odpowiedź: Czy masz już utworzoną aplikację Chrome, którą chcesz i czy działa? Powinien sprawdzić, czy na serwerze chmury w chmurze nie ma wiadomości. Ten serwer śledzi Ci adres URL.


  • Aby uruchomić js wewnątrz java Używam Rhino.Przejrzałem przykłady w dokumentacji, ale nadal nie jestem pewien, czy adnotacja @JSFunction wystarcza do zadeklarowania funkcji js.?

    POUFNY: Wydaje jesteś nieporozumienie część co robi android app (wysyłanie akcję PLAY), a co robi przeglądarka Chrome (faktycznie odtwarzanie filmu)


Mam nadzieję, że odpowiedź trochę pomogła, doceniana jest opinia :)