分享一点写代码的经验,嘿嘿复制过来的。

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)

执行一个插件,

返回插件自定义返回的值。

共 2 条评论
叶力森 1年前
0 

不错不错,太好了啊,感谢楼主的分享,我的苹果语音库不会中代码的,可以学到知识了。

0 

这不是解说那个帮助与反馈的代码,说明里面的东西吗?

添加一条新评论

登录后可以发表评论 去登录