我想模拟一个复杂的手势,比如按下手指,画一个形状,然后抬起手指。
我找到了如何使用
sendevent
执行此操作,但当我尝试 sendevent
时,我的操作系统报告权限被拒绝,所以我想使用 adb shell input
执行此操作。
我正在通过 ubuntu 操控设备,一台 Andorid 三星。
我明确不是在寻找“形状”线,即滑动命令。我正在寻找可以不间断地绘制曲线或螺旋的东西,即不是以
swipe
动作的小增量。
用
swipe
完全可以做到。这是使用 AndroidViewClient/culebra 的示例。
#! /usr/bin/env python3
import numpy as np
from com.dtmilano.android.viewclient import ViewClient
def toint(n):
return n.item()
def npint(a):
return np.round(a).astype(int)
def spiral(t):
a = 0.5 # Controls the tightness of the spiral
b = 0.5 # Controls the spacing between turns
g = 40 # Factor
dx = 400 # Delta x
dy = 600 # Delta y
x = g * a * t * np.cos(t + b) + dx
y = g * a * t * np.sin(t + b) + dy
return list(zip(map(toint, npint(x)), map(toint, npint(y))))
# get helper
helper = ViewClient.view_client_helper()
# generate values for the parameter t
t = np.linspace(0, 4 * np.pi, 100)
# calculate (x, y) coordinates
segments = spiral(t)
# assume google keep is open so we can see it drawing
# see spiral.gif
helper.ui_device.swipe(segments=segments, segment_steps=5)