在Android上模拟触摸事件

时间:2020-10-20 12:48:38

标签: java android android-studio touch-event

我想在自己的应用程序上模拟触摸事件。 尽管之前已经问过这个问题,但我还是想在自己的应用程序上模拟触摸。

使用这些代码时,我的应用程序崩溃。我不知道问题出在哪里。 主要活动: https://justpaste.it/7g7ct

和MyService: https://justpaste.it/2uury

MainActivity:

package com.example.myapplicationdffghgh;

import androidx.appcompat.app.AppCompatActivity;

import android.accessibilityservice.AccessibilityService;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.os.SystemClock;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.Toast;

import java.nio.file.Path;

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent serviceIntent = new Intent(this, GestureDescription.class);
        startService(serviceIntent);

        GestureDescription.createClick(581,1044);


    }




   


}

2 个答案:

答案 0 :(得分:0)

首先GestureDescription不是extends Service,因此startService不能以Activity开头...因此删除这些行:

Intent serviceIntent = new Intent(this, GestureDescription.class);
startService(serviceIntent);

答案 1 :(得分:0)

您可以使用View的onTouchEvent方法,并使用所需的坐标创建一个MotionEvent。

long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
float x = 0.0f;
float y = 0.0f;
int metaState = 0;
MotionEvent motionEvent = MotionEvent.obtain(
    downTime, 
    eventTime, 
    MotionEvent.ACTION_UP, 
    x, 
    y, 
    metaState
);

view.dispatchTouchEvent(motionEvent);