Java 当我的应用程序处于';焦点不在?
我正在尝试制作一款应用程序,当用户界面不在焦点位置时,它可以点击手机屏幕。我尝试过创建一个服务,以及创建一个新的线程来运行该服务,但我似乎仍然没有运气 以下是我的AndroidManifest.xml代码中的服务声明:Java 当我的应用程序处于';焦点不在?,java,android,multithreading,service,background,Java,Android,Multithreading,Service,Background,我正在尝试制作一款应用程序,当用户界面不在焦点位置时,它可以点击手机屏幕。我尝试过创建一个服务,以及创建一个新的线程来运行该服务,但我似乎仍然没有运气 以下是我的AndroidManifest.xml代码中的服务声明: <service android:enabled="true" android:name=".Tap_Service"/> 这就是为什么我如此困惑;如果我的命令是运行日志,那么即使我离开应用程序,日志也会在Android St
<service android:enabled="true" android:name=".Tap_Service"/>
这就是为什么我如此困惑;如果我的命令是运行日志,那么即使我离开应用程序,日志也会在Android Studio中正确显示。这告诉我后台服务正在正常运行,而我的UI没有冻结这一事实告诉我我的其他线程也在正常工作。唯一一次它不起作用是当我尝试点击应用程序外的屏幕时。否则,水龙头工作正常。当我按下按钮“开始线程”时,它总是在日志中显示它已成功单击。当我打开应用程序时,这是正确的,但当它没有打开时,日志仍然会继续显示“单击”,尽管我的屏幕没有被点击。我哪里做错了?谢谢。“我哪里出错了?”——出于隐私和安全原因,应用程序不能将输入事件注入其他应用程序,除非通过可访问性API。啊,这就是原因。非常感谢。
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);
}
}