6 小毛毛和猴拥抱 1年前 1753次点击
部分代码只对解说读屏有效解说多功能手势和插件以lua语法配合解说专有API实现一个手势多个功能。
如果对lua和androlua比较熟悉,还可以实现更多功能,本文档只讲述专有API部分。
基本概念,
service,辅助功能服务,是这个读屏服务的核心,各个功能都是以这个服务为核心。
参数类型说明,
node,当前焦点,也就是当前获得辅助功能焦点的节点,一般操作都是针对这个焦点的。
bool,布尔值,true或者false。
text,文字内容。
return,返回,通知读屏你是否希望读屏执行该手势的默认操作。
返回true则拦截该手势,false返回上一层执行,如在单程序手势返回false,则由全局手势接管处理,全局手势返回false,由默认手势处理。
常用命令,
service.execute(命令,node)
这个命令就是解说为了简化开发内置的一些指令,如果执行成功返回true,失败返回false。
service.postExecute(时间,命令,node)
延时执行命令,
text=service.getText(node)
获取指定节点的文字信息。
service.setText(node,text)
设置指定焦点输入框文字内容。
service.setText(text)
设置当前界面焦点输入框文字内容。
service.copy()
复制当前焦点的文字内容到剪切板。
service.appendCopy()
追加复制当前焦点的文字内容到剪切板。
service.copy(text)
复制指定的文字内容到剪切板。
service.appendCopy(text)
追加复制指定的文字内容到剪切板。
service.paste()
将剪切板内容粘贴到当前界面的输入框。
service.paste(node)
将剪切板内容粘贴到指定的输入框。
service.toNext()
下一个焦点。
service.toNext(node,bool)
指定节点下一个焦点,bool为true查找子节点,为false不查找子节点。
service.toPrevious()
上一个焦点。
service.toPrevious(node,bool)
指定节点上一个焦点,bool为true查找子节点,为false不查找子节点。
service.toNextChar()
下一个字符。
service.toPreviousChar()
上一个字符。
service.toNextLine()
下一行。
service.toPreviousLine()
上一行。
service.toTextStart()
到文字开头。
service.toTextEnd()
到文字结尾。
service.toListViewStart()
到列表开头。
service.toListViewEnd()
到列表结尾。
service.getRootNodeInfo()
获取根节点。
service.ocr(node)
文字识别指定节点,仅会员可用。
service.setTimerMode(bool)
开启或关闭计时器模式,bool为true开启,false为关闭。
service.setAutoReadEnabled(bool)
开启或关闭阅读模式,bool为true开启,false为关闭。
service.setAutoNext(bool)
开启或关闭自动浏览模式,bool为true开启,false为关闭。
bool=service.isEditView(node)
判断当前节点是否为编辑框。
bool=service.isSeekBar(node)
判断当前节点是否为进度滑块。
bool=service.isListView(node)
判断当前节点是否为列表。
bool=service.isInListView(node)
判断当前节点是否在列表中。
bool=service.isInWebView(node)
判断当前节点是否在网页中。
bool=service.isClick(node)
判断当前节点是否可以点击。
service.toClick()
点击当前焦点,在安卓7以上优先使用模拟手点击焦点。
service.toClick(node)
点击指定节点。
service.toLongClick()
长当前焦点。
service.toLongClick(node)
长按指定节点。
service.toBack()
返回。
service.toHome()
返回主屏幕。
service.toNotification()
打开通知栏。
service.toParent()
打开最近任务列表。
service.scrollBackward(node)
向后滚动。
service.scrollForward(node)
向前滚动。
service.loadGesturePackage(name)
载入手势方案。
service.click(x,y)
模拟人手点击屏幕指定位置,仅安卓7以上可用。
service.longClick(x,y)
模拟人手长按屏幕指定位置,仅安卓7以上可用。
service.press(x,y,t)
模拟人手在屏幕指定位置按住指定时间,仅安卓7以上可用。
service.swipe(x1,y1,x2,y2,t)
模式人手从一个位置用指定时间滑动到另一个位置,仅安卓7以上可用。
代码控制语句。
if 条件 then 要执行的代码
end
满足指定条件执行中间的代码。
如,
if service.isEditView(node) then service.execute(拆分编辑,node)
return true
end
这句代码意思是,当焦点为编辑框时打开拆分编辑。
for n=1,重复次数 do
要执行代码
end
重复指定代码一定次数
如,
for n=1,10 do
service.toBack()
end
重复返回10次。
定义函数,
function 函数名称(参数)
函数代码
end
函数是代码的功能块,可以有效的重复利用代码。
如,下边是一个向列表添加数据的函数,在手势代码中,可以用于向一个列表添加重复的代码。
function append(t1,t2)
for k,v in ipairs(t2) do
table.insert(t1,v)
end
end
点击列表={}
按钮列表={%点击,%返回}
for n=1,10 do
append(点击列表,按钮列表)
end
向点击列表重复添加10次按钮列表的内容。
function 滑动()
service.swipe(500,300,500,1000,1000)
return true
end
模拟手在屏幕上滑动,可以在手势代码中使用,
service.click({{>微信,%滑动}})
打开微信模拟在屏幕从上向下滑动。
自动点击,
service.click({按钮列表})
自动依次查找点击按钮列表的按钮,
按钮名称支持一些符号进行通配,
如前面加#(井号),表示搜索的是自定义标签,
前边或后边加*(星号)表示前边或后边还有其他字符,
后边加#(井号)表示按钮次序,
后边加@(圈a)表示只在某一个程序查找,
加$(美元)表示执行完成后延时。
参数支持多个表,按顺序查找,
如果查找成功返回true,失败返回false。
完整说明见后边,
延时点击,
service.postClick(时间,{按钮列表})
延时一定时间执行点击,时间单位为毫秒,按钮列表定义与click相同,
没有返回值。
service.plugin(插件名称,node)
执行一个插件,
返回插件自定义返回的值。
不错不错,太好了啊,感谢楼主的分享,我的苹果语音库不会中代码的,可以学到知识了。