то, что я пытаюсь сделать, это вызвать событие онтач в определенной области моей активности, когда я получаю определенную строку от arduino (через bluetooth). Я пытаюсь создать контроллер с Wii и Arduino для использования в игре, которую я пишу сам.
прежде чем вы ответите на этот вопрос, я уже знаю, что существует функция * openButton.performClick(); для этого, но в игре я не всегда буду использовать кнопки, так что это нехорошо.
я хочу имитировать прикосновение, как это делает adb с обезьяной, но без разрешения root что-то вроде инъекции прикосновения, просто без рута.
это часть кода:
int[] loc = new int[2];
openButton.getLocationOnScreen(loc);// get the region where to simulate the //touch event
xTest = (float)loc[0];
yTest = (float)loc[1];
@SuppressLint("Recycle") void testing(){
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
float x = xTest;
float y = yTest;
int metaState = 0;
MotionEvent motionEvent = MotionEvent.obtain(
downTime,
eventTime,
MotionEvent.ACTION_UP,
x,
y,
metaState
);
dispatchTouchEvent(motionEvent);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
int action = event.getAction();
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_UP:
// do something
openButton.performClick();
break;
case MotionEvent.ACTION_MOVE:
// do something
// how to trigger a ACTION_DOWN event here?
break;
}
return false;
}
Итак, когда я получаю определенную строку, я хочу программно смоделировать событие касания в определенной области экрана, на этот раз это кнопка, но это может быть что-то еще, поэтому «view.performclick()» не очень хорошо. Я видел несколько примеров, когда перед dispatchTouchEvent они помещают представление, если я это сделаю, я получаю сообщение об ошибке, заранее спасибо за вашу помощь.