精华内容
下载资源
问答
  • Android自动点击屏幕

    万次阅读 多人点赞 2017-10-20 14:12:52
    在开发的过程中会遇到自动测试功能,比如如何自动点击按钮进行测试,当然可以使用按键精灵等工具进行测试,不过如何在程序进程中测试呢,下面就介绍下adb shell的操作,通过shell进行点击等操作。1.模拟滑动input ...

    在开发的过程中会遇到自动测试功能,比如如何自动点击按钮进行测试,当然可以使用按键精灵等工具进行测试,不过如何在程序进程中测试呢,下面就介绍下adb shell的操作,通过shell进行点击等操作。

    1.模拟滑动

    input swipe startX startY endX endY duration(ms) 

    2.单击某点

    input tap x y

    3.长按某点

    input touchscreen swipe x y x y duration(ms)

    4.单击某个键

    input keyevent keyCode

    5.长按某个键

    input keyevent --longpress keyCode

    一、如下以点击为例,传入当期点所在屏幕位置或者比例

    package cn.test.autotouch;
    
    import android.app.Activity;
    import java.io.IOException;
    
    public class AutoTouch {
        public int width = 0;
        public int height = 0;
    
        /**
         * 传入在屏幕中的比例位置,坐标左上角为基准
         * @param act 传入Activity对象
         * @param ratioX 需要点击的x坐标在屏幕中的比例位置
         * @param ratioY 需要点击的y坐标在屏幕中的比例位置
         */
        public void autoClickRatio(Activity act, final double ratioX, final double ratioY) {
            width = act.getWindowManager().getDefaultDisplay().getWidth();
            height = act.getWindowManager().getDefaultDisplay().getHeight();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    // 线程睡眠0.3s
                    try {
                        Thread.sleep(300);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    // 生成点击坐标
                    int x = (int) (width * ratioX);
                    int y = (int) (height * ratioY);
    
                    // 利用ProcessBuilder执行shell命令
                    String[] order = { "input", "tap", "" + x, "" + y };
                    try {
                        new ProcessBuilder(order).start();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    
        /**
         * 传入在屏幕中的坐标,坐标左上角为基准
         * @param act 传入Activity对象
         * @param x 需要点击的x坐标
         * @param y 需要点击的x坐标
         */
        public void autoClickPos(Activity act, final double x, final double y) {
            width = act.getWindowManager().getDefaultDisplay().getWidth();
            height = act.getWindowManager().getDefaultDisplay().getHeight();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    // 线程睡眠0.3s
                    try {
                        Thread.sleep(300);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
    
                    // 利用ProcessBuilder执行shell命令
                    String[] order = { "input", "tap", "" + x, "" + y };
                    try {
                        new ProcessBuilder(order).start();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    }

    二、使用方法

        /***************************定义*****************************/
        //声明一个Activity
        public static Activity staticActivity;
        //初始化AutoTouch对象
        public static AutoTouch autoTouch = new AutoTouch();
        //在onCreate中对staticActivity赋值
        staticActivity = this;
    
        /***************************使用*****************************/
        //传入所在比例
        autoTouch.autoClickRatio(staticActivity, 0.4375, 0.537); 
        //出入坐标
        autoTouch.autoClickPos(staticActivity, 840, 580);
    展开全文
  • Android 实现自动点击屏幕的方法

    千次阅读 2020-09-29 14:46:06
    //新建一个实体类 import android.app.... * 自动点击屏幕 */ public class AutoTouch { public int width = 0; public int height = 0; /** * 传入在屏幕中的比例位置,坐标左上角为基准 * * @param a.
    //新建一个实体类
    import android.app.Activity;
    
    import java.io.IOException;
    
    /**
     * Created by cxf on 2020/9/29
     * 自动点击屏幕
     */
    public class AutoTouch {
        public int width = 0;
        public int height = 0;
    
        /**
         * 传入在屏幕中的比例位置,坐标左上角为基准
         *
         * @param act    传入Activity对象
         * @param ratioX 需要点击的x坐标在屏幕中的比例位置
         * @param ratioY 需要点击的y坐标在屏幕中的比例位置
         */
        public void autoClickRatio(Activity act, final double ratioX, final double ratioY) {
            width = act.getWindowManager().getDefaultDisplay().getWidth();
            height = act.getWindowManager().getDefaultDisplay().getHeight();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    // 线程睡眠0.1s
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    // 生成点击坐标
                    int x = (int) (width * ratioX);
                    int y = (int) (height * ratioY);
    
                    // 利用ProcessBuilder执行shell命令
                    String[] order = {"input", "tap", "" + x, "" + y};
                    try {
                        new ProcessBuilder(order).start();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    
        /**
         * 传入在屏幕中的坐标,坐标左上角为基准
         *
         * @param act 传入Activity对象
         * @param x   需要点击的x坐标
         * @param y   需要点击的x坐标
         */
        public void autoClickPos(Activity act, final double x, final double y) {
            width = act.getWindowManager().getDefaultDisplay().getWidth();
            height = act.getWindowManager().getDefaultDisplay().getHeight();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    // 线程睡眠0.1s
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
    
                    // 利用ProcessBuilder执行shell命令
                    String[] order = {"input", "tap", "" + x, "" + y};
                    try {
                        new ProcessBuilder(order).start();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    }

    //代码中运用

    /***************************定义*****************************/ //声明一个Activity

    public static Activity staticActivity;

    //初始化AutoTouch对象

    public static AutoTouch autoTouch = new AutoTouch();

    //在onCreate中对staticActivity赋值

    staticActivity = this;

    /***************************使用*****************************/

    //传入所在比例

    autoTouch.autoClickRatio(staticActivity, 0.4375, 0.537);

    //出入坐标

    autoTouch.autoClickPos(staticActivity, 840, 580);

    展开全文
  • 自动点击器帮你自动点击屏幕,无需ROOT权限。可以方便添加点击位置,设置点击速度。 类似于按键精灵功能。 只支持Android7.0及以上系统
  • 自动点击屏幕-调用android隐藏的功能

    千次阅读 2014-04-04 23:56:49
    1 首先要找到android系统在

    1 首先要找到android系统在编译过程中产生的classes.jar


    2 修改eclipse的配置文件,我的eclipse修改如下:

            -startup
    plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
    --launcher.library
    plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20120913-144807
    -product
    com.android.ide.eclipse.adt.package.product
    --launcher.XXMaxPermSize
    512M
    -showsplash
    org.eclipse.platform
    --launcher.XXMaxPermSize
    512m
    --launcher.defaultAction
    openFile
    -vmargs
    -Dosgi.requiredJavaVersion=1.5
    -Xms512m
    -Xmx1024m

    -Declipse.buildId=v22.2.1-833290




    3 建立android工程,右键工程,属性,在Libraries选项卡里,选择add library,User Library,下一步,user library,new,给个名字,ok,add jar,选择

       对应android系统的的classes.jar

       在Order and export里面,将刚刚建立的library up到最 上面。

        打开工程中的project.property文件,添加一行:dex.force.jumbo=true

    4 现在就可以调用android系统隐藏的功能了。

    展开全文
  • // 周期执行点击(200ms) mTimer.schedule(new TimerTask() { @Override public void run() { if (mIsRunning) { String[] order = {"input", "tap", "" + mXPos, "" + mYPos}; try { mBuilder.command(order)...
    public class AutoClickActivity extends AppCompatActivity implements View.OnClickListener {
        private AppCompatTextView mEtXPos, mEtYPos;
        private AppCompatButton mBtnStart;
        private float mXPos, mYPos;
        private boolean mIsRunning;
        // 制定adb命令的lei
        private ProcessBuilder mBuilder;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_auto_click);
            mEtXPos = findViewById(R.id.mEtXPos);
            mEtYPos = findViewById(R.id.mEtYPos);
            mBtnStart = findViewById(R.id.mBtnStart);
            mBtnStart.setOnClickListener(this);
            Timer mTimer = new Timer();
            mBuilder = new ProcessBuilder();
    // 周期执行点击(200ms)
            mTimer.schedule(new TimerTask() {
                @Override
                public void run() {
                    if (mIsRunning) {
                        String[] order = {"input", "tap", "" + mXPos, "" + mYPos};
                        try {
                            mBuilder.command(order).start();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }, 0, 200);
        }
    
        @Override
    // 监听触摸
        public boolean onTouchEvent(MotionEvent event) {
            LogUtils.iTag("RedWolf", "onTouchEvent: ", event.getX(), event.getY());
            switch (event.getAction()) {
    // 手指移动 获取手指所在XY坐标 塞入EditText 同时记录
                case MotionEvent.ACTION_MOVE:
                    mXPos = event.getX();
                    mYPos = event.getY();
                    mEtXPos.setText(String.format("%s", mXPos));
                    mEtYPos.setText(String.format("%s", mYPos));
                    break;
    // 手指按下 获取手指所在XY坐标 塞入EditText 同时记录
                case MotionEvent.ACTION_DOWN:
                    mXPos = event.getX();
                    mYPos = event.getY();
                    mEtXPos.setText(String.format("%s", mXPos));
                    mEtYPos.setText(String.format("%s", mYPos));
                    break;
            }
            return super.onTouchEvent(event);
    
        }
    
        @Override
        public void onClick(View v) {
            if (mIsRunning) {
                mBtnStart.setText("开始点击");
            } else {
                mBtnStart.setText("结束点击");
            }
            mIsRunning = !mIsRunning;
        }
    }
    
    展开全文
  • 一、应用中模拟物理和屏幕点击事件 例如,模拟对某个view的点击事件 private void simulateClick(View view, float x, float y) { long downTime = SystemClock.uptimeMillis(); final MotionEvent downEvent =...
  • Popupwindow如果需要点击空白处自动消失,需要设置两个函数 1、customPopWindow.setFocusable(true);该函数也可以在构造函数中设置,如:mPopupWindow = new PopupWindow(popunwindwow,LayoutParams.FILL_PARENT, ...
  • 如题,在进行NFC开发的时候,发现在P2P模式下,两部手机靠近后屏幕会缩小,然后显示“触摸以发送消息”。能否不出墨,实现手机一靠近就自动发送消息?
  • Android 4.0设置Dialog点击屏幕不消失

    千次阅读 2014-05-08 11:01:01
    Android ICS对UI做了很大的变动,系统提倡使用DialogFragment,但是系统默认的操作习惯是点击屏幕Dialog会自动消失。 为了实现业务的需求,想过使用Dialog风格的Activity,但是做出来的效果和系统的UI效果不匹配...
  • 1 我们都知道Android 自动的工具 adb shell,里面自带有一个input工具,可以实现屏幕点击,滑动,home键等。 如在Terminal中输入: adb shell #进入系统 input keyevent KEYCODE_BACK #模拟按返回键 input keyeve
  • android点击按钮后,屏幕熄灭,十年后自动亮屏,怎么做? 在测试最后一个加一个电流测试,测试步骤 关屏背光和雷达电源、蓝牙电源,10秒后再重新亮屏和雷达电源、蓝牙电源 测试界面下面出现两个选项“PASS”和"FAIL...
  • 后来想了很多办法,最后用模拟点击的方式实现了自动播放视频。话不多说上代码。 final int width = getWindowManager().getDefaultDisplay().getWidth(); final int height = getWindowManager().getDefaultDisplay...
  • Android开发时,需要实现点击屏幕自动对焦,并在焦点处绘制对焦框,对焦完成后对焦框消失。 2、解决思路 首先,确保已经完成相机功能的相关代码,可参考谷歌官方文档Camera。 程序运行的整个过程,由点击...
  • Android ICS对UI做了很大的变动,系统提倡使用DialogFragment,但是系统默认的操作习惯是点击屏幕Dialog会自动消失。 为了实现业务的需求,想过使用Dialog风格的Activity,但是做出来的效果和系统的UI效果不匹配,...
  • 自动点击屏幕功能探索 研究了好几天(小白) ,还是没能实现想要的功能。 1-
  • 在编写Android自动化测试用例的时候,可能会碰到这样的情况,在一个Android版本的模拟器上运行的好好的测试用例,在另一个版本的Android模拟器上就运行不正常了。基本症状是,在测试代码里获取一个View的实例,然后...
  • ``` // 最大的屏幕亮度 private float maxLight; // 当前的亮度 private float currentLight;...// 60秒时间不点击屏幕,屏幕变暗 private long delayTime = 60 * 1000L; protected void on...
  • Android APP旋转屏幕

    千次阅读 2019-05-05 19:02:15
    1、自动感应传感器的变化(不用开启自动旋转功能) //在Activity中设置即可 setRequestedOrientation(ActivityInfo....2、点击Button旋转屏幕 /** * Button点击事件 **/ @Override public void onClick(V...
  • // 最大的屏幕亮度 private float maxLight;...// 60秒时间不点击屏幕,屏幕变暗 private long delayTime = 60 * 1000L; protected void onCreate() { // 保持屏幕常亮 getWindow().setFlags(WindowManage

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 485
精华内容 194
关键字:

android自动点击屏幕