Krosxx / Android-Auto-Api

安卓无障碍服务Api, 为了简化无障碍服务使用,并使用 Kotlin 以提供简洁的Api。
Apache License 2.0
418 stars 72 forks source link

gesture()、click()无返回 #2

Closed TxcA closed 3 years ago

TxcA commented 3 years ago

首先感谢作者造的轮子,减轻了很多的工作量。而且稍微翻了下源码,代码逻辑看着很舒服。

今天刚找到该库,引用后尝试使用click()和gesture()做坐标点击操作,但坐标点击后会卡在方法体内,无返回值,导致不能进行下一次操作。而使用gestureAsync()可以正常执行。 翻了下demo,似乎也是直接执行gesture(),没有做其它操作。

环境:Huawei Mate10 Pro(Android10) 感谢。

Krosxx commented 3 years ago

换台设备正常吗

TxcA commented 3 years ago

换台设备正常吗

AVD(API29)也是同样情况。 操作能执行(已做出点击操作),但执行后无返回值。

                    lifecycleScope.launch {
                        //click(420, 1910)
                        val isClick = gesture(
                            (ViewConfiguration.getTapTimeout() + 50).toLong(),
                            arrayOf(Pair(420, 1910))
                        )
                        Log.d("$Tag", "click = $isClick")
                    }

click = $isClick 不会输出,但已操作已执行。

TxcA commented 3 years ago

Screenshot_1594890341.png

Krosxx commented 3 years ago

好的 我处理下

TxcA commented 3 years ago

好的 我处理下

不确定是否是库的代码问题,还是我这边的处理问题。感谢~

Krosxx commented 3 years ago

看样子应该是 代码在主线程执行了,lifecycleScope.launch 改成 lifecycleScope.launch(Dispatchers.Default) 试下

TxcA commented 3 years ago

看样子应该是 代码在主线程执行了,lifecycleScope.launch 改成 lifecycleScope.launch(Dispatchers.Default) 试下

好的,gesture都不能在主线程执行吗?因为10多秒了都没返回。如果是耗时操作,应该也完毕了。

Krosxx commented 3 years ago

没有处理,主线程会出现不明“死锁“,建议操作代码放到其他线程执行

TxcA commented 3 years ago

没有处理,主线程会出现不明“死锁“,建议操作代码放到其他线程执行

好嘞,我一下试试。谢了~

TxcA commented 3 years ago

果然是线程问题,起个线程就好了:

 lifecycleScope.launch(Dispatchers.IO) {
                        val a = tap(420, 1910)
                        Log.d(TAG, "a = $a")
                    }