2015-04-23 7 views
6

Ich versuche, die Kontrolle über die Play/Pause HTML-DOM-Elemente (in einem Browser in einem PC geöffnet) von einem Android-Gerät zu übernehmen.DOM-Elemente von Android-App steuern

In der HTML-Seite (in Google Chrome-Browser) gibt es einen <video> Tag, damit ich es so steuern kann:

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

Aber ich mag, dass von einem Android-Gerät laufen, so dass ich GCM bin mit.

Ich lese here und bekam ein wenig Einblick, aber ich habe noch einige Fragen.

  • Erstens, weil ich in Eclipse ich schreibe, und es sieht keine document Variable, wird ein Fehler ausgegeben. Also, wie kann Eclipse erkennen, dass element in der HTML-Seite, so kann ich die apk auf dem Gerät kompilieren und installieren?

  • Wo gebe ich die Seiten-URL an, mit der ich kommunizieren möchte? (Senden Wiedergabe/Pause-Befehle)

  • auszuführen js innerhalb java Ich Rhino verwenden. Ich schaute durch die Beispiele in der documentation, aber ich bin immer noch nicht sicher, ob eine @JSFunction Annotation genug ist, um eine js Funktion zu erklären.

Hier ist mein Code:

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(); 
    } 
} 

Wie fahre ich fort von hier?

Antwort

2
  • Erstens, weil ich in Eclipse ich schreibe, und es sieht keine Dokumentvariable, wird ein Fehler ausgegeben. Wie kann Eclipse dieses Element in der HTML-Seite erkennen, so dass ich die apk auf dem Gerät kompilieren und installieren kann?

    antwort: Auf Ihrem Android-Gerät übergeben Sie einfach eine Nachricht an den Chrome-Browser. A.k. eine Aktionsvariable, die auf Wiedergabe oder Stopp festgelegt ist. Ihre Chrome App wird dann die Nachricht aufnehmen und entsprechend handeln. Sie können die URL auch als Variable in der Nachricht senden, wenn Sie verschiedene URLs wiedergeben möchten.


  • Wo gebe ich die Seiten-URL mit dem ich kommunizieren möchte? (Sende Play/Pause Befehle)?

    antw: Haben Sie bereits die Chrome App erstellt, die Sie wollen und verifiziert, dass sie funktioniert? Es sollte mit einem Google Cloud-Server nach Nachrichten suchen. Dieser Server verfolgt die URL für Sie.


  • js innerhalb Java betreibe ich Rhino bin mit.Ich habe mir die Beispiele in der Dokumentation angesehen, bin aber immer noch nicht sicher, ob eine @ JSFunction-Annotation ausreicht, um eine js-Funktion zu deklarieren.

    answ: Es scheint, dass Sie den Teil sind Missverständnisse, was die Android-App tut (Senden der Aktion Play) und was der Chrome-Browser funktioniert (eigentlich den Film zu spielen)


Ich hoffe, meine Antwort hat ein wenig geholfen, Feedback ist willkommen :)