对于坐标的操作, 在编写脚本中, 不可避免的会遇到,甚至是取色/截图过程中都需要用到坐标的拾取. 那如果每次都打开指针位置,用起来并不是很方便,在没有root的设备上获取坐标点, 在APP外部是没办法直接来监听屏幕点击事件,但是如果在APP内部则可以监听到用户的点击,那如何既在APP内,又可以操作APP外呢?
答案就是悬浮窗...纯透明,用户不可见的一层悬浮窗,在允许点击悬浮窗的状态下,监听用户的点击和滑动事件, 然后在不允许点击悬浮窗的状态下,转发用户的点击和滑动事件, 这样既监听到了点击,又不影响用户的正常操作.
基础代码:
//auto.waitFor() 注意这个,因为要转发点击事件.所以需要打开无障碍服务,//如果你是低于安卓7.0的用户,则无法使用...auto.waitFor();var w = floaty.rawWindow("top" gravity="center" bg="#00000000"/>);var x_start, y_start, x_end, y_end, time, actionCounts = 1;//悬浮窗全屏, 但不会覆盖到任务栏和导航栏w.setSize(-1, -1);//设置悬浮窗可点, 可点状态下监听用户的点击w.setTouchable(true);//脚本结束时,关闭悬浮窗events.on("exit", ()=>{w.close();});w.top.setOnTouchListener(function(view, event) {switch (event.getAction()) {case event.ACTION_DOWN: //按下事件w.setTouchable(false);time = new Date();x_start = event.getRawX();y_start = event.getRawY();return true;case event.ACTION_MOVE: //移动事件return true;case event.ACTION_UP: //抬起事件swipeTime = new Date() - time;if (Math.abs(event.getRawY() - y_start) > 3 || Math.abs(event.getRawX() - x_start) > 3) {x_end = event.getRawX();y_end = event.getRawY();log("滑动坐标: " + x_start + "," + y_start + "---->" + x_end + "," + y_end);threads.start(function () {swipe(x_start, y_start, x_end, y_end, swipeTime);sleep(swipeTime + 100);ui.run(function () {w.setTouchable(true);});});} else {log("点击坐标: " + x_start + "," + y_start);threads.start(function () {click(x_start, y_start);ui.run(function () {w.setTouchable(true);});})}return true;}return true;});//保持悬浮窗运行setInterval(()=>{}, 1000)
测试截图如下图的GIF:

如图, 我开启了指针位置. 获取到的坐标和指针位置显示的坐标. 完全一致. 所以这么取点完全没问题.唯一的缺点就是. 动作有滞后性.因为要先监听后转发.所以没法做到实时的操作. 至于各种投屏软件那种实时的滑动原理.我也没有去了解...
因为是最基础的代码. 在此之外我有一些想法和思路分享出来, 在此的基础上,我们是不是可以再做一个悬浮窗.来实时跟踪指针的位置,显示出当前的坐标,当前坐标点的色值, 另外指针滑动抬起时,还可以设置一个询问是否要截图,等等的想法, 如果可以做到点击滑动无延迟是最好的. 有兴趣的就继续深入的研究一下吧.
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
APP
+关注
关注
33文章
1596浏览量
76214 -
脚本
+关注
关注
1文章
414浏览量
29326 -
root
+关注
关注
1文章
87浏览量
22206
发布评论请先 登录
相关推荐
热点推荐
并联机器人快速准确拾取物体
`▼并联机器人迅速将糖豆放入瓶里 仔细观看我们可以发现,相同颜色的糖豆放在一个瓶里 并联机器人这类设备主要用于精密紧凑的应用场合,竞争点集中在速度、重复定位精度和动态性能等方面。 并联机器人快速拾取枕包牛奶,放入指定位置 并联机器人快速准确拾取物体`
发表于 09-14 11:37
贴片机机器拾取的两种基本模式
到目前为止,机器拾取的工具和方式仍然与手工拾取相似:机械抓取和真空吸取两种基本模式,只不过机器拾取工具的复杂性和过程的速度是手工无法比拟的。如图1所示。 图1 手工元件拾取的工具
发表于 09-07 15:18
CAD中怎么批量标注坐标?CAD批量标注坐标
个 回车结束选择;请选择需标注坐标的对象: 回车结束标注;.....2、勾选“仅标图层”,拾取按钮和编辑框亮显,说明此时仅拾取指定图层的特征点,单击“拾取
发表于 06-06 15:45
表面肌电信号拾取的专用有源滤波器设计
表面肌电信号拾取的专用有源滤波器设计
本文介绍了表面肌电信号拾取的专用有源滤波器设计,分析了此滤波器的性能,并与一种医用
发表于 03-11 15:47
•3531次阅读
机器视觉让机器人能在储存箱中拾取小型零件
据报导,随机机器人拾取应用非常具有挑战性,因为指定拾取的零件通常置放松散,且在箱中彼此堆叠在一起。客户希望机器人能从箱中近1万个零件中拾取99%的零件,每个零件只有高5公分、直径4公分,零件尺寸与箱子尺寸的面积比大约为1:900
发表于 05-10 09:02
•2279次阅读
压电特性及能量自拾取特性的研究
研究人员首先对压电敏感膜进行了制备(图1)。研究所使用的敏感膜是以初始厚度为70μm、密度为0.550g/m³规格的成品PP蜂窝薄膜经气压膨化与电晕极化处理后形成的柔性压电敏感膜。针对该敏感膜,根据压电特性与动能拾取特性研究的需求
关于Autojs外部拾取坐标点
评论