首页 > 解决方案 > 当我的应用不在焦点上时,如何运行滑动和点击命令?

问题描述

我正在尝试制作一个能够在 UI 未聚焦时点击手机屏幕的应用程序。我尝试过创建服务,以及创建该服务运行的新线程,但我似乎仍然没有运气。

这是我的 AndroidManifest.xml 代码中的服务声明:

<service android:enabled="true" android:name=".Tap_Service"/>

这是我的 MainActivity 类中的代码,用于显示我正在尝试执行的命令:

public void begin_thread(View view){
        startService(new Intent(this, Tap_Service.class));
    }
    public void end_thread(View view){

    }

    static class FirstThread extends Thread {
        int seconds;
        FirstThread(int seconds){
            this.seconds = seconds;
        }
        @Override
        public void run(){
            for (int i = 0; i < seconds; i++){
                ProcessBuilder pb = new ProcessBuilder("input", "tap", "539", "1120");        
                try {
                    Process pc = pb.start();
                    Log.d(TAG, "Clicked");
                } catch (IOException e) {
                    Log.d(TAG, "Error on click");
                    e.printStackTrace();
                }
                try{
                    Thread.sleep(2000);
                } catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
        }

    }

这是我的服务类的代码:

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import android.view.View;

import androidx.annotation.Nullable;

import java.io.IOException;

public class Tap_Service extends Service {

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
    private static final String TAG = "Feedback: ";


public int onStartCommand(Intent intent, int flags, int startId) {

        MainActivity.FirstThread thread = new MainActivity.FirstThread(3);
        thread.start();

        return super.onStartCommand(intent, flags, startId);

    }
}

这就是我如此困惑的原因;如果我的命令是运行日志,那么即使我离开我的应用程序,日志也会正确显示在 Android Studio 中。这告诉我后台服务运行正常,并且我的 UI 没有冻结的事实告诉我我的其他线程也正常运行。唯一不起作用的是当我尝试点击应用程序外的屏幕时。否则,水龙头工作完美。当我按下按钮begin_thread时,它总是在日志中说它点击成功。当我打开应用程序时这是真的,但当它没有打开时,日志仍然继续显示“已单击”,尽管我的屏幕没有被点击。我哪里错了?谢谢你。

标签: javaandroidmultithreadingservicebackground

解决方案


推荐阅读