java - 当我的应用不在焦点上时,如何运行滑动和点击命令?
问题描述
我正在尝试制作一个能够在 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
时,它总是在日志中说它点击成功。当我打开应用程序时这是真的,但当它没有打开时,日志仍然继续显示“已单击”,尽管我的屏幕没有被点击。我哪里错了?谢谢你。
解决方案
推荐阅读
- r - plot.gam 和 vis.gam 为相同的 mgcv GAM 产生不同的表面
- python - 导入 pikepdf 时缺少 dylib 符号
- c++ - How to execute from Makefile? (C++)
- vue.js - 是否可以通过 Mustache 语法 {{}} 传递 Vue 组件?
- linux - os.system 运行路径包含空格的 chrome 应用程序。Mac 和 Linux 的结果不同
- django - 使用一种 POST 方法保存多个表单。(姜戈)
- python - 使用 F 字符串显示浮点数
- javascript - 禁用特定页面的机车滚动
- python - 如果dict值等于数字,如何打印带有字典中项目的值?
- oracle - ORA-04092: 无法在触发器中回滚