要搞定外设鼠标点击屏幕上的指定位置,就需要确定鼠标指针在屏幕上绝对坐标. 理论上HID是可以发送绝对坐标使鼠标指针直接移动到指定的位置.但是目前我还没搞明白要怎么发送16进制的数据才能使用绝对坐标. 但偶然间找到了一个安卓VIEW的方法可以监听到鼠标指针的位置...顺便记录一下这个方法.
利用view的OnGenericMotionListener方法给view设置一个监听,当鼠标在这个view上移动的时候. view就能获取到鼠标的绝对位置.但是缺点就是在安卓8.0 以后,悬浮窗全屏的时候是无法覆盖到状态栏的, 这也就导致鼠标在状态栏上移动的时候无法获取到鼠标的坐标...
我也没有找到比较好的方法来覆盖掉状态栏...安卓7.0倒是可以覆盖到状态栏. 在悬浮窗覆盖到的地方移动鼠标指针,就可以获取到鼠标指针的实时位置了.
在执行项目的时候,可以先开启一个"全屏"的悬浮窗,然后通过hid协议让鼠标移动一个像素.获取到鼠标的绝对位置...然后再关闭悬浮窗即可,这样获取到第一个鼠标的确切坐标后. 后面就能通过计算得到所有的绝对位置. 从而和autojs配合来点击和滑动操作.
以下是悬浮窗的代码...
var w = floaty.rawWindow(
<frame id="top" bg="#CC000000" />
);
ui.run(()=>{
//设置悬浮窗全屏
w.setSize(-1, -1);
//要设置悬浮窗拦截点击事件,才可以监听到鼠标移动事件
w.setTouchable(true);
});
var points = {}
w.top.setOnGenericMotionListener(function(v, event) {
points.x = event.getX().toFixed(2);
points.y = event.getY().toFixed(2);
console.log("鼠标: " , points);
return false;
});
setTimeout(() => {
w.close();
}, 60000);
希望大家有个愉快的周末....
全部0条评论
快来发表一下你的评论吧 !