Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我的应用程序处于';焦点不在?_Java_Android_Multithreading_Service_Background - Fatal编程技术网

Java 当我的应用程序处于';焦点不在?

Java 当我的应用程序处于';焦点不在?,java,android,multithreading,service,background,Java,Android,Multithreading,Service,Background,我正在尝试制作一款应用程序,当用户界面不在焦点位置时,它可以点击手机屏幕。我尝试过创建一个服务,以及创建一个新的线程来运行该服务,但我似乎仍然没有运气 以下是我的AndroidManifest.xml代码中的服务声明: <service android:enabled="true" android:name=".Tap_Service"/> 这就是为什么我如此困惑;如果我的命令是运行日志,那么即使我离开应用程序,日志也会在Android St

我正在尝试制作一款应用程序,当用户界面不在焦点位置时,它可以点击手机屏幕。我尝试过创建一个服务,以及创建一个新的线程来运行该服务,但我似乎仍然没有运气

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

<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);

    }
}