gpt4 book ai didi

android - 从 Android 应用程序控制 DOM 元素

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:15:47 24 4
gpt4 key购买 nike

我正在尝试从 Android 设备控制播放/暂停 html DOM 元素(在电脑中打开的浏览器中)。

在 html 页面中(在 Google Chrome 浏览器中)有一个 <video>标记以便我可以像这样控制它:

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

但我希望它从 Android 设备运行,所以我使用 GCM .

我读了here并获得了一些见解,但我仍然有一些问题。

  • 首先,因为我在 eclipse 中编写,它看不到 document变量,它会产生错误。那么eclipse如何识别element在 html 页面中以便我可以在设备上编译和安装 apk?

  • 我在哪里指定我想与之通信的页面 url? (发送播放/暂停命令)

  • 要在 java 中运行 js 我正在使用 Rhino .我查看了 documentation 中的示例但我仍然不确定 @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();
}
}

我如何从这里继续?

最佳答案

  • 首先,由于我是在 eclipse 中编写的,它看不到任何文档变量,因此会产生错误。那么 eclipse 如何识别 html 页面中的那个元素,以便我可以在设备上编译和安装 apk?

    回答:在您的 Android 设备上,您只需向 Chrome 浏览器传递一条消息。 A.k.设置为播放或停止的 Action 变量。然后,您的 Chrome 应用程序将接收消息并采取相应行动。如果您希望能够播放不同的 url,您也可以将 url 作为变量发送到消息中。


  • 我在哪里指定我想与之通信的页面 url? (发送播放/暂停命令)?

    回答:您是否已经创建了您想要的 chrome 应用程序并验证它可以正常工作?它应该检查谷歌云服务器的消息。该服务器会为您跟踪 url。


  • 要在 java 中运行 js,我使用的是 Rhino。我查看了文档中的示例,但我仍然不确定 @JSFunction 注释是否足以声明 js 函数。?

    回答:看来您误解了 android 应用程序的功能(发送播放操作)和 chrome 浏览器的功能(实际播放电影)


希望我的回答对您有所帮助,欢迎提供反馈:)

关于android - 从 Android 应用程序控制 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29830024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com