在WebView中记录每次触摸,包括触摸JavaScript元素。安卓

在WebView中记录每次触摸,包括触摸JavaScript元素。安卓,java,javascript,android,webview,touch,Java,Javascript,Android,Webview,Touch,所以,我想做的是制作一个半自动的页面监视器,当屏幕的某些部分发生变化时,它会提醒用户。我的应用程序最大的好处是,用户可以记录一些动作,因为一些登录或注册表单是通过点击JavaScript元素而不是仅仅刷新来改变的。到目前为止,我所做的是制作了可缩放的网络视图,并编程了一个按钮,用于启动和停止触摸运动录制。除了当用户按下JavaScript微调器时,一切都像一个符咒。当它出现时,我的应用程序停止记录触摸,并且android布局按钮隐藏。所以,我想做的是强制我的触摸记录系统响应每一个可能的元素,它是

所以,我想做的是制作一个半自动的页面监视器,当屏幕的某些部分发生变化时,它会提醒用户。我的应用程序最大的好处是,用户可以记录一些动作,因为一些登录或注册表单是通过点击JavaScript元素而不是仅仅刷新来改变的。到目前为止,我所做的是制作了可缩放的网络视图,并编程了一个按钮,用于启动和停止触摸运动录制。除了当用户按下JavaScript微调器时,一切都像一个符咒。当它出现时,我的应用程序停止记录触摸,并且android布局按钮隐藏。所以,我想做的是强制我的触摸记录系统响应每一个可能的元素,它是用JavaScript编写的事件。 这是我的密码:

package com.example.automatikaandroidui;

import java.util.ArrayList;

import android.support.v7.app.ActionBarActivity;
import android.graphics.Color;
import android.graphics.Point;
import android.graphics.PointF;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity implements OnClickListener, OnTouchListener {

    WebView webView;
    Button mygtukasSeka;
    boolean isPressed = false;
    boolean halfWay = false;
    boolean eile = false;
    ArrayList<PointF> masyvas = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        masyvas = new ArrayList<PointF>();

        webView = (WebView)findViewById(R.id.webView1);
        webView.loadUrl("https://www.eregitra.lt/viesa/interv/Index.php");
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebChromeClient(new WebChromeClient());
        webView.setOnTouchListener(this);


        mygtukasSeka = (Button)findViewById(R.id.mygtukas_seka);
        mygtukasSeka.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

        switch(v.getId()){

        case R.id.mygtukas_seka: {
            TextView notify = (TextView)findViewById(R.id.ispek_irasyma);

            if(!isPressed){

                notify.setTextColor(Color.RED);
                notify.setText("Įrašoma...");
                isPressed = true;

            }

            else { 
                notify.setText("");
                isPressed = false;
            }
        }

        }

    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getActionMasked()){

        case MotionEvent.ACTION_DOWN : {
            if(!halfWay && isPressed)
                halfWay = true;
        }

        case MotionEvent.ACTION_UP : {
            if(halfWay && isPressed){
                PointF taskas = new PointF(event.getX(),event.getY());
                masyvas.add(taskas);
                halfWay = false;
                Toast.makeText(MainActivity.this, taskas.x+" "+taskas.y, Toast.LENGTH_SHORT).show();
                Toast.makeText(MainActivity.this, masyvas.size()+"", Toast.LENGTH_SHORT).show();
            }
        }

        }

        if(isPressed){
            if(eile)
                eile = false;
            else eile = true;
        }

        return eile;
    }

}
package com.example.automatikaandroidui;
导入java.util.ArrayList;
导入android.support.v7.app.ActionBarActivity;
导入android.graphics.Color;
导入android.graphics.Point;
导入android.graphics.PointF;
导入android.os.Bundle;
导入android.view.MotionEvent;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.view.OnTouchListener;
导入android.webkit.WebChromeClient;
导入android.webkit.WebSettings;
导入android.webkit.WebView;
导入android.widget.Button;
导入android.widget.TextView;
导入android.widget.Toast;
公共类MainActivity扩展ActionBarActivity实现OnClickListener、OnTouchListener{
网络视图;
按钮mygtukasSeka;
布尔值isPressed=false;
布尔值=假;
布尔值=假;
ArrayList masyvas=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
masyvas=newarraylist();
webView=(webView)findViewById(R.id.webView1);
webView.loadUrl(“https://www.eregitra.lt/viesa/interv/Index.php");
webView.getSettings().setBuilTinZoomControl(true);
webView.getSettings().setLoadWithOverview模式(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setJavaScriptEnabled(true);
setWebChromeClient(新的WebChromeClient());
setOnTouchListener(这个);
Mygtukaseka=(按钮)findViewById(R.id.mygtukas_seka);
mygtukasSeka.setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.mygtukas_seka:{
TextView notify=(TextView)findViewById(R.id.ispek_irasyma);
如果(!isPressed){
notify.setTextColor(Color.RED);
notify.setText(“Įrašoma…”);
isPressed=true;
}
否则{
notify.setText(“”);
isPressed=false;
}
}
}
}
@凌驾
公共布尔onTouch(视图v,运动事件){
开关(event.getActionMasked()){
case MotionEvent.ACTION\u DOWN:{
如果(!已按下一半(&I)
一半=正确;
}
case MotionEvent.ACTION\u UP:{
如果(已按下一半(&I){
PointF taskas=新的PointF(event.getX(),event.getY());
masyvas.add(taskas);
一半=假;
Toast.makeText(MainActivity.this,taskas.x+“”+taskas.y,Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this,masyvas.size()+“”,Toast.LENGTH_SHORT.show();
}
}
}
如果(显示){
如果(eile)
艾尔=假;
否则eile=真;
}
返回eile;
}
}
下面是一些屏幕截图: 这是登记表。当您按下B键时,会出现微调器,当您更改不同的元素时,所有页面都会刷新。正如你所看到的,底部有三个按钮,中间一个叫做Seka records Touchs

这是我以前谈过的旋转器。忽略toast消息

提前感谢!:)