安卓/ios脚本开发按键精灵经验小分享
1. 程序的切换
我们经常碰到这样的需求:打开最近的应用列表,选取我们想要的程序。但是每个手机为了自己的风格,样式都有区别,甚至连列表的滑动方向都不一样,我们很难通过模拟操作来识别点击,那么我们做的只能给自己用。没办法了吗?当然不!我们来看看有哪些相关的命令,找啊找,终于,我们在命令大全找到了GetRunningApp()这个函数,命令的用法是:
- Dim arr() //定义一个数组变量
- arr=GetRunningApp() //获取所有应用程序包名并将它们合并到arr数组中保存
- For each n in arr
- TracePrint n //遍历arr数组并输出所有获取的包名字符
- Next
命令功能易懂,返回的是一个应用包名列表,好了,列表名找到了,那么我们来看看获取的列表名有什么规律,我们尝试打开一个应用并运行一下脚本:
我们可以发现,在获取运行中的应用列表的最下面,含有我们最后一次打开的应用,我们再打开一个应用试验一下:
证明我们的想法完全没错,并且,我们可以发现,倒数第二个就是我们上次打开的应用,根据这个特性,我们就不需要使用Menu键或者长按HOME键(Android 4.4之前)去打开最近的应用列表了。我们只需要这么写:
- Dim arr= GetRunningApp()
- Function UBound(arr)
- Dim i = 0
- For Each str In arr
- i = i + 1
- Next
- UBound = i
- End Function
- RunApp arr(UBound(arr)-2) //打开上次打开的程序,上一个程序是-2而不是-1是因为数组下标从0开始
2. 脚本之间的交互
有的功能,可能一个线程并不能完美实现,这时候需要用到多线程,但是多线程的写法相对来说复杂一些,那么有什么好办法吗?
这边可以尝试着打包两个小精灵,并同时运行,发现这是行得通的,那么就可以以这种另类的方式实现多线程,并且可以很方便的进行组合来实现功能
(例如我有一个脚本是用来做定时重启游戏的,一个是a游戏脚本的,一个是b游戏脚本的,那么只需要在定时重启游戏的脚本里设置不同游戏并运行,就等于开启了一个线程用来检测,这个时候可以自己搭配a游戏脚本或者b游戏脚本),这种方式虽然降低了脚本难度,但是确提高了控制难度,实在算不上多好的方法,但是它有其独特的地方,那就是可以根据同样的原理,来对手机按键(模拟器中)和PC按键之间进行交互。
比如希望手机上运行游戏,电脑端实时反馈游戏情况,相信很多人知道模拟器的图像并不好获取,一缩放就都变样了,因此使用PC按键来写模拟器中的游戏脚本不是好选择。而PC端用PC按键,手机端用手机按键,只要他们之间有桥梁就能够完美协调。
说了那么多,交互方法呢!别急,马上说,知道模拟器是可以共享文件夹的,也就是它可以和硬盘数据共享,那么交互就可以采用文本来交互!至于交互的方法:通过读取修改同一个文件来实现交互。
我们来分析一个功能:我们需要在手机端上为XX平台刷数据量,于是我们需要登陆进去,简单的使用一键注册的方式来注册账号,并记录下系统为我们分配的ID号,使用识字命令记录下识别到的ID。然后存储到文本中,这个时候再通过PC端的文本读取来得到ID值进行处理,你可以识别到新的ID就添加到word文档,或者通过QQ发送给某某。
你们也许会说!文本又不需要实时去读取,根本没必要做此交互,以上的例子可能如此,但是这并不代表他就没有独特的地方可以用到,我们知道,现在的模拟器一个个先后支持了多开,如果我开了2个模拟器。有100个号需要他们完成,我们可以人工的一个模拟器设定一次,并分别记下他们处理到的位置,并且由于多开的模拟器处理速度不一致,可能出现有的快有的慢的情况,我们不好协调分配,基于这个情况,我们是否就能用到上述的方式来进行处理呢?
这个较多的是思想而不是代码,毕竟先有想法再实现,所以大家可以发散思维,可能一些另类的方法反而能更好的实现我们需要的功能!