关于无障碍服务模拟点击(手势操作 gestureDescription)的异常问题

le540850072 初级 2020-10-21 06:17:41
主题:尝试实现APP在后台自动点击屏幕任意位置的功能。
根据网友的一些方法尝试使用AccessbilityService中的gestureDescription进行模拟手势操作(只尝试了单击)。但是调用手势存在异常,在回调GestureResultCallback中总是走到onCancel而不是onComplete。不知道为何,从表象上看也没有触发我想要的单击效果。

关键代码如下:

fun click(x: Int, y: Int) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) return
val path = Path()
path.moveTo(x.toFloat(), y.toFloat())
val builder = GestureDescription.Builder()
val gestureDescription = builder
.addStroke(GestureDescription.StrokeDescription(path, 50, 200))
.build()
val result = dispatchGesture(gestureDescription, @RequiresApi(Build.VERSION_CODES.N)
object : GestureResultCallback() {
override fun onCancelled(gestureDescription: GestureDescription?) {
super.onCancelled(gestureDescription)
Timber.i("onCancelled : gestureDescription")
}
override fun onCompleted(gestureDescription: GestureDescription?) {
super.onCompleted(gestureDescription)
Timber.i("onCompleted : gestureDescription")
}
}, null)
Timber.i("dispatch gesture: $result, x = $x, y = $y")
}
...全文
61272 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
DeepL男子 2021-10-26
  • 打赏
  • 举报
回复 3

检查无障碍服务的xml清单文件中,有没有打开 允许 接受模拟触摸的选项:android:canPerformGestures="true"

qq_24438773 2020-10-26
  • 打赏
  • 举报
回复
程序crash 后,很大概率会出现这个问题,应该就是服务残留了下来,你再调用就响应不到了,没有什么具体的错误信息,当服务执行到onCancelled 基本就可以判定有异常了. 提示重启手机吧 .网上大家好像也都是这种做法.
le540850072 初级 2020-10-26
  • 打赏
  • 举报
回复
引用 4 楼 qq_24438773 的回复:
我最近也在撸无障碍,发现Path 这个东西很容易出错,出错以后就再也成功不了了,只有重启手机,这样Path 才能正常操作. 而根据AccessibilityNodeInfo 去查找对应的控件进行操作就不会出现这种问题 . 反正能操作控件就优先操作控件把~
因为,我是想实现手机桌面的一个自动点击效果,所以操作控件应该是达不到的吧。你说到的容易出错,在哪里可以看到错误点?
qq_24438773 2020-10-23
  • 打赏
  • 举报
回复
我最近也在撸无障碍,发现Path 这个东西很容易出错,出错以后就再也成功不了了,只有重启手机,这样Path 才能正常操作. 而根据AccessibilityNodeInfo 去查找对应的控件进行操作就不会出现这种问题 . 反正能操作控件就优先操作控件把~
le540850072 初级 2020-10-22
  • 打赏
  • 举报
回复
结合以上关键代码和关键日志发现:dispatchGesture方法返回了true。但是回调GestureResultCallback却走到了onCancelled。 此外没有看到预想的单击效果。
灯泡君 应用层 2021-09-09
  • 举报
回复
@le540850072 也碰到这种情况,好无头绪。请问有解决思路吗。
le540850072 初级 2021-09-09
  • 举报
回复
@灯泡君 没有哦
灯泡君 应用层 2021-09-09
  • 举报
回复 1
@le540850072 是完全不管这种情况吗?我发现重启手机也没用。

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧