[问题] 模拟点击悬浮View并传递事件给萤幕

楼主: RX1226 (NO KING)   2019-01-02 18:38:54
板上的大大们您好
小弟想做一个悬浮视窗
最小化回到桌面
可以移动到特定位置
然后按下按钮后会在该位置模拟点击动作
会点击到萤幕上的对应位置
现况与问题描述:
目前悬浮视窗和模拟点击都做了可以Work
在自己的APP下按下模拟点击可以点到特定位置
但是在最小化APP后模拟点击的部分却无法触发该位置的点击
在输出Log后发现点击事件有触发
但是没办法传递到萤幕上的元件
程式码如下:
Button btn_click = dialog_control.findViewById(R.id.btn_click);
btn_click.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//取得目标位置在萤幕上的座标
int[] location = new int[2];
dialog_target.getLocationOnScreen(location);
//有取得正确座标, 执行模拟点击时无法触发画面上的元件
simulateTouchEvent(dialog_target, location[0], location[1]);
}
});
其中dialog_control是控制的View, dialog_target是悬浮的目标视窗
想要模拟点击dialog_target位置下的元件
不知道是否是点击方式选错了, 或是需要特别的权限
先谢谢大大的指引了
发现少贴了simulateTouchEvent
立马补上
private void simulateTouchEvent(View view, float x, float y) {
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
int metaState = 0;
MotionEvent motionEvent = MotionEvent.obtain(downTime, eventTime,
MotionEvent.ACTION_DOWN, x, y, metaState);
view.dispatchTouchEvent(motionEvent);
MotionEvent upEvent = MotionEvent.obtain(downTime+1000, eventTime+1000,
MotionEvent.ACTION_UP, x,y, metaState);
view.dispatchTouchEvent(upEvent);
}
作者: lonelytea (霸气逼人)   2019-01-02 21:34:00
不用权限 setOnClickListener没错 你去看simulateTouch是否执行正确
楼主: RX1226 (NO KING)   2019-01-03 10:26:00
我来研究看看, 谢谢lonelytea大大的方向指引!
作者: lonelytea (霸气逼人)   2019-01-03 05:34:00
不用权限 setOnClickListener没错 你去看simulateTouch是否执行正确
楼主: RX1226 (NO KING)   2019-01-03 18:26:00
我来研究看看, 谢谢lonelytea大大的方向指引!发现现在卡在点击事件无法传递到萤幕上的特定位置
作者: beyondthe (bb)   2019-01-04 03:09:00
不是在自己的 app 应该没权限吧
楼主: RX1226 (NO KING)   2019-01-04 18:39:00
我在研究看看, 谢谢大大们的建议
作者: beyondthe (bb)   2019-01-03 19:09:00
不是在自己的 app 应该没权限吧
楼主: RX1226 (NO KING)   2019-01-04 10:39:00
我在研究看看, 谢谢大大们的建议

Links booklink

Contact Us: admin [ a t ] ucptt.com