SendGesture всегда возвращает falseJAVA

Программисты JAVA общаются здесь
Ответить
Гость
 SendGesture всегда возвращает false

Сообщение Гость »

Мой сервис не может инициировать касание экрана. sendGesture из AccessibilityService всегда возвращает false. Как решить эту проблему?
Мой сервис:
public class FloatingButton extends AccessibilityService {
private WindowManager windowManager;
private ImageView shotButton;
private int[2] passMark = {100, 100};
private int[2] shotMark = {200, 200};

@Override
public void onInterrupt() {}

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {}

@Override
public void onCreate() {
super.onCreate();

shotButton = new ImageView(this);

shotButton.setImageResource(R.drawable.activate);

windowManager = (WindowManager)getSystemService(WINDOW_SERVICE);
final LayoutParams shotButtonParams = getLayoutParams();
shotButtonParams.x = 0;
shotButtonParams.y = 100;

windowManager.addView(shotButton, shotButtonParams);

try {
OnTouchListener shotButtonOnTouchListener = getShotButtonOnTouchListener(shotButtonParams);
OnClickListener shotButtonOnClickListener = getShotButtonOnClickListener();

shotButton.setOnClickListener(shotButtonOnClickListener);
shotButton.setOnTouchListener(shotButtonOnTouchListener);
} catch (Exception exception) {
Log.e("SuperShot", exception.getMessage());
}
}

private LayoutParams getLayoutParams() {
final LayoutParams layoutParams = new WindowManager.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT,
LayoutParams.TYPE_APPLICATION_OVERLAY,
LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT
);

layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
return layoutParams;
}

private OnClickListener getShotButtonOnClickListener() {
return new OnClickListener() {
@Override
public void onClick(View view) {
Log.d("SuperShot", "Coordinate pass: " + String.valueOf(passMark[0]) + ", " + String.valueOf(passMark[1]));
Log.d("SuperShot", "Coordinate shot: " + String.valueOf(shotMark[0]) + ", " + String.valueOf(shotMark[1]));

click(passMark[0], passMark[1]);
}
};
}

private void click(int x, int y) {
Path path = new Path();
path.moveTo(x, y);

StrokeDescription clickStroke = new StrokeDescription(path, 0, 10);
Builder clickBuilder = new Builder();
clickBuilder.addStroke(clickStroke);
GestureDescription gesture = clickBuilder.build();
boolean result = this.dispatchGesture(gesture, null, null);
Log.d("SuperShot", String.valueOf(result));
}
}

В журналах метода click указано значение false, что означает, что sendGesture не смог завершить клик. Как можно решить эту проблему и с чем она может быть связана?
Manifest.xml:







config_accessibility_service.xml:




Подробнее здесь: https://stackoverflow.com/questions/781 ... urns-false
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»