51

Tasker:Android 上的自动化标杆

 5 years ago
source link: http://sspai.com/post/45759?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

编注:本文节选自少数派付费栏目Power+。Power+ 聚焦于效率工具和生产力技巧的挖掘,辅以对 App、数字生活方式的探讨,以每周 4 次、总计超过 300+ 期的频率更新,为你提供源源不断的生产力补给包,帮你解决具体的、直接关系到每天生活工作的痛点。

:zap:️ 点此了解 Power+ 每周更新目录

​智能手机之所以能够称为「智能」,根本原因是除了预先设定好的功能和程序以外,我们还可以在手机上实现一定的「自主性」,换句话说就是我们有能力通过安装 App 或者更加高级的操作 —— 比如自动化工具和脚本,来让手机适应我们的生活与通讯以外的需求。特别是近几年来随着智能手机的发展普及,手机上的传感器越来越丰富,自动化工具和脚本能做到的事情也在飞速地增多。

a22eUrU.png!web 越来越强大的自动化工具

作为普通的手机用户,绝大部分人是不会因为某些需求去学习如何编写 App 这种「极限挑战」,自动化工具就是因此而生,用户只需付出很小的学习成本就能自己动手制作出满足自己要求的自动化应用,达到学习成本与实现复杂度的平衡。

比如 iOS 上就有能独当一面的 Workflow,不过由于 iOS 系统对于各项权限加上硬件的主动限制,它的功能止步于「非常好用的自动化工具」,除了自动化已有功能外,用户如果想要创建一些 系统没有的新功能 限制非常大。

扩展阅读:想要了解 Workflow 具体能干什么,可以参考这篇文章: iOS 效率神器 Workflow 怎么用?跟着这篇入门指南从零开始 | 新手问号

ZzieAbA.jpg!web Workflow 新手问号

Tasker 是什么?

我们今天要介绍的自动化工具 Tasker 比 Workflow 更强大,自由。得益于 Android 系统的开放性与对系统 API 调用的宽松要求,Tasker 可以实现更多样,更复杂的自动化操作。特别是在获得 ROOT 权限之后 Tasker 能访问几乎所有数据(手机内外的皆可),甚至实现 手机硬件支持的任何操作(即使系统没有)

除了强大的功能自动化,Tasker 还提供完整的界面设计支持,从里到外打造完全属于自己的智能手机。

Y7feiiu.png!web Tasker

我已经使用了很长时间的 Tasker,探索出了它的部分可能性。为了给大家解释清楚 Tasker 能做些什么,做到什么程度,我专门写了一篇文章 「Tasker - 我与拥有它的生活方式」 ,以时间轴的方式介绍了 Tasker 陪伴我的一天。总而言之,Tasker 的作用范围之广泛,自由度之高,是没有接触过它的人无法想象的,从给日常生活带来便利的操作到各种专业工作的辅助甚至是主力应用它都能够胜任。​

e6ZFBnq.jpg!web Tasker 和我的一天

​除了上面文章提到的动作,这里再举一些 Tasker 的 基本操作

  • 收到短信后自动复制验证码,将验证码自动转发到微信或者另一台手机。
  • 每天早上起床时自动播放喜欢的播客作为闹钟,同时音量会逐渐变大,再也不怕闹钟「毁歌」。
  • 连上特定的 Wifi 立即打开「自动同步」,断开 Wifi 关闭。
  • 每天定时自动从 Pixiv 和 Bing 等网站获取壁纸然后自动更换。
  • 运行小说软件时自动调暗亮度和开启护眼模式,关闭自动旋转。
  • 运行地图软件自动打开 GPS,关闭软件时自动关闭 GPS。
  • 到达指定地点发送指定短信给某个联系人(比如到了咖啡店自动发短信给朋友说自己已经到了)。
  • 去小卖部,饭堂时自动打开支付宝支付\微信支付。
  • 利用彩云分钟级天气预报制作下雨预警(在下雨前 20 分钟自动发送通知/微信/短信提醒)。
  • 收到指定短信内容后每隔一段时间向指定手机发送地理位置信息。
  • 静音模式如果有超过三次同一来电自动关闭静音模式,然后向对方发送一条说明短信。
  • 利用人工智能自动回复短信。
  • 收到短信时拍照或者录音(相当于无限距离的远程按钮)。

以及一切同类应用能做到的所有事情......

yYnInev.jpg!web Tasker 的更多功能

说到这里,有的派友可能会开始担心,这么复杂操作是不是需要付出很大的精力和学习成本?这就要说一下 Tasker 另一个值得称赞的地方 —— 平滑过渡的用户梯度了。初次打开 Tasker ,设置里面的「初学者模式」默认是开启状态,新上手的用户不会看到密密麻麻的配置和变量文件。

还有一个对新手超级友好的地方是每一个界面,每一个操作右上角都有大大的帮助问号,点开就是单独针对这个页面/操作的详细介绍,加上最最重要的特性:帮助文档提供完整 「简体中文/繁体中文」 支持。初学者模式下除了一些复杂度特别高的操作无法完成,90% 你能想到的能拆分成简单步骤的操作都能在一个下午内了解并制作出来。

6fEJJrr.png!web 初学者模式

​当你累积了足够长的使用时间,熟悉了基本操作后,即可尝试关闭「初学者模式」。这时隐藏选项和每个操作背后的数据都会对你完全敞开,可以对自己的任务做出更加清晰精细的定制,就算是程序猿和攻城狮级别的需求也可以在这个「专家模式」里面制作出来,Tasker 的威力真正地被释放出来。

比如这些高级操作都是 Tasker 支持的:

  • 读取应用的本地 Sqlite3 数据库提取数据进行操作(例如短信电话数据库,微信聊天记录)。

  • 和任何第三方应用互动,即使第三方应用没有提供 Tasker 操作(原理是提取和模拟 Intent)。

  • 获取互联网数据并且处理,包括不限于爬虫和无头浏览器。

  • 支持调用所有系统原生 API 和各种第三方库,包括反射方式调用。

  • 支持用 Javascript,Shell 甚至 Python 等脚本语言自定义操作,程序员甚至可以用它来开发新的应用。

YVNfu2I.png!web Tasker 高级用法

​相信对上面名词有些了解的派友都感受到了 Takser 的强大,只要你会的,它都能实现。有比较复杂需求又对这些高级操作不了解的派友也不用担心,Tasker 支持完善的操作导入和导出,甚至不用下载,复制配置文件 导入即用

Mr2An2e.png!web 导入即用的 Tasker

动手制作第一个 Tasker 初级实例:短信自动复制验证码

上面介绍完了 Tasker 是什么,能干什么,接下来就要说说它是怎么干的了。俗话说光说不练假把式,我给大家准备了一个非常适合初学者学习的例子 —— 短信自动复制验证码。 难度不高,不需要设计复杂的界面和任何基础 ,在实践中认识 Tasker 几个重要基本操作,最重要的是非常地实用。当然想要直接使用的派友可以直接在跳过整个制作过程在 文章末尾直接下载 配置文件 导入使用 ,还是建议看着文章亲自动手制作,效果最佳。

A7FZrur.gif 自动复制粘贴验证码

我在每次制作之前都会用「在 什么地方/什么时候/发生什么 时 干什么」的句式概括将要制作的 Tasker 任务,比如这个实例就是「在收到包含验证码短信的时候复制并且自动填写验证码」。根据这一句话,我们可以轻松按照几个步骤做好这个实例。

一个完整功能的 Tasker 由以下几个部分组成:​

  • 配置文件:文件决定了触发条件,Tasker 提供了非常多样的触发条件,从特定地理位置到接到某个电话,从收到某条通知到手机倾斜了多少度应有尽有。甚至安装支持的第三方应用后还能拓展触发条件。在这个例子中触发条件是收到短信。

  • 任务:任务是为了达到某个目的所做操作的集合,Tasker 满足触发条件后执行的就是一个或是多个任务,任务可以暂停,中止或者反转。在这个例子中任务是获取,然后复制验证码。

  • 操作:操作时 Tasker 的基本「单位」,一个操作只能执行一种动作,多个操作组合起来的任务就能满足种各样千奇百怪的需求。比如获取验证码是一个操作,复制验证码也是一个操作。

  • 场景(非必需):上面三个已经可以组成完整的 Tasker 了。但是有的操作不仅是在后台默默执行,一些数据还需要被展示,这个时候就需要展示用的界面,在 Tasker 里面则是「场景」。场景有点像我们平时用的桌面小部件,Tasker 可以在图层,对话框甚至是 Activity 上绘制场景。场景的所有部分和所有动作都可以由用户自己定义。

    ai2uYz2.png!web Tasker 界面

再次提示:文章末尾有视频操作演示和配置文件直接下载,觉得文字方式看不明白/太复杂的朋友可以看简单得多的视频演示。在操作中遇到困难/「不想做我要直接用」的朋友请下载 配置文件 导入研究/使用。

给不知道的朋友科普下 Activity:它是 Android 四大组件之一,我们常见到的应用大部分都是由不同的 Activity 组合而成,每个 Activity 通过窗口绘制一个用户界面。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。比如微信里面最近消息是一个 Activity,聊天窗口又是另一个 Activity 于此类推。 一般来讲我们看到的界面就是这个应用最顶上的 Activity

第一步:设定收到短信时触发任务

首先我们要让 Tasker 收到短信时触发任务,也就是确定「发生什么」。

  • 在 Tasker 的 任务 界面点击右下角的「+」号创建任务,任务名字随你喜欢,这里我们叫它「复制验证码」吧。

    uumeInb.png!web
  • 现在我们还不需要详细制作,点击右下角的「+」号随便添加一个操作占位,比如 Tasker → 禁用(因为 Tasker 不能添加没有操作的任务,所以要占位,等下再删除占位操作)。

    Y7ZFFf7.png!web
  • 直接返回到主界面,这样子我们就做好了一个空任务。

    Uz6VzuB.png!web

​接下来就是告诉 Tasker 「发生什么」了。

  • 在 Tasker 的 配置文件 界面点击右下角的「+」号,选择 事件

    JNjUVne.png!web
  • 选择 电话 → 收到短信 ,弹出来编辑界面。

  • 在操作编辑界面,类型选择短信(应该不会有验证码彩信......),不用指定发件人和内容,返回即可。

    qQbmUr2.png!web
  • 返回后会自动弹出任务选择界面,因为 Tasker 也不允许没有任务的配置文件,所以不选的话会自动删除配置文件。这里选择我们前面的空任务「复制验证码」,这就是我们先建立空任务的原因。

    YRFnEfU.png!web

​到这里第一步就已经完成了,每次我们的手机收到短信的时候都会触发「复制验证码」这个任务啦。

第二步:从短信中提取出验证码

​接下来我们需要获取到验证码。​

  • 任务 界面打开建立好的「复制验证码」,在任务编辑界面长按之前的占位操作然后拖动到右下角的垃圾桶删掉。​

    63Y3qeN.png!web
  • 点击右下角的「+」号,选择 变量 → 变量设置 。​

    UNbAzyF.png!web
  • 在操作编辑界面, 名称 填一个我们喜欢的英文名称,这里我填的是 %YZM 。接着点击 发往 右边的图标,在打开的变量选择界面中选择 短信内容 。​

    J3MvemU.png!web

​返回到任务编辑界面后我们就添加了一个「变量设置」操作,变量是「可变的量」的意思,变量有名字,还能储存一个值。就像我们平时听到一个名字后会想起对这个人的印象,而对这个人的印象是可以改变的。

在 Tasker 中变量以「%」后面加英文的形式命名,比如刚刚我们的 %YZM 。「变量设置」操作将短信内容设置到 %YZM%YZM 的值就变成了我们收到的短信内容,如果将「变量设置」操作中的短信内容换成「少数派 666」,那么执行操作后 %YZM 的值就是「少数派 666」。

提示:

  1. 点击任务编辑界面左下角的播放按钮可以立即执行任务哦。
  2. 变量选择界面里的「短信内容」本身就就是一个名为「%SMSRB」,储存着短信内容的变量。
  3. Tasker 设置里面关闭初学者模式后,我们就可以在 变量 界面看到所有我们自定义变量的值啦。
M7ri2qY.png!web 输入变量

​获取到了短信内容,接下来就是建立我们的核心提取验证码操作。

  • ​任务编辑界面点击右下角的「+」号,选择 变量 → 变量搜索替换 。​

    uay2iiz.png!web
  • ​在操作编辑界面, 变量 填写 %YZM搜索 填入 [\d]{6}|[\d]{4} (这里是匹配 4 个或者 6 个数字的正则表达式),把忽略大小写,多行,只匹配一次都勾选上。然后 将匹配储存到 填入 %YZM 即可。​

    BBzeMvN.png!web
  • ​点击右下角的「+」号,选择 警报 → 闪光灯 。​

    aY73Izi.png!web
  • ​在操作编辑界面的 文字 里面填入自己喜欢的提示语,比如 验证码 %YZM1 已复制到剪贴板 。其中 %YZM1 是匹配的验证码,因为我们勾选了只匹配一次,如果有多个匹配结果还会有 %YZM2%YZM3 等等储存结果的变量。​

    eyiiman.png!web

​返回到主界面,点击右上角的钩钩保存刚才所有操作,用另一台手机发送带有 4 个/6 个数字的短信给这台手机,如无意外应该就能看到「验证码 ** 已复制到剪贴板」的提示了。顺便吐槽一下 Tasker 的翻译,「警报」指的是各种类型的通知和提示,而「闪光灯」指的是我们常见的屏幕下方的提示:​

6rymMvI.jpg!web 奇怪的翻译

​开发者一定是用的是机翻(Alarm 与 Flash)......

第三步:将验证码放入剪贴板

​上面的操作只是提取出了验证码,并没有真正地把验证码放到剪贴板里面,想要实现我们还要:

  • ​在任务编辑界面点击右下角的「+」号,选择 系统 → 设置剪贴板

    AnaEZnM.png!web
  • 文字 填写我们的验证码变量 %YZM1

    UvMBNzM.png!web

​简单搞定,到此一个简单的自动复制验证码操作就做好啦,现在请尽情地用手机登录各种账号吧。

附加:简单验证是否为验证码短信

​虽然功能上已经实现复制验证码,不过上面的操作还有一个 Bug,那就是所有带有超过 4 个数字短信内容的短信都会被当成验证码短信处理。例如「您可以发短信至 10010 查询流量」里面的 10010 就会被当成验证码,这显然会影响日常使用,我们可以利用 Tasker 的条件判断来过滤只接收验证码短信。​

  • ​​在 任务 界面打开建立好的「复制验证码」,点击右下角的「+」号,选择 任务 → if

    vm6Bje7.png!web
  • ​​在操作编辑界面点击 条件 右边的图标,选择 短信内容

    UbaEzei.png!web
  • ​​点击中间的「~」,选择 匹配正则式

    6JfmmqJ.png!web
  • ​​右边的值填入「验证」,返回后长按 if 操作拖动到最上方。

    NBRVJji.png!web

​​添加 if 判断之后,只有短信内容里面带有「验证」两个字才会被当成验证码短信啦。你还可以根据自己的实际情况添加更多的判断来提高精准度,比如英语「code」或者「登录码」之类的。在操作编辑界面弄好一个判断之后点击 条件 右边的「+」号图标,然后把「与」改成「或」就能添加新的判断了。

UVnA7nV.png!web 添加新的条件判断

(需要 ROOT)高级附加:自动填写验证码

​Tasker 不仅能帮你复制验证码,还能帮你省去复制粘贴这个步骤,就像效果图那样自动在输入框填入验证码。实现就跟将验证码放入剪贴板那样简单,缺点就是这个操作需要 ROOT 权限。 ​

  • ​​在任务编辑界面点击右下角的「+」号,选择 输入 → 输入

    vM77veb.png!web
  • ​​ 文字 填写我们的验证码变量 %YZM1

    IFruiqF.png!web

​​这样就行了,是不是超级简单?

附件

Tasker 导入导出数据的方法

​接下来就教大家下载好配置文件和任务之后如何导入到 Tasker。

首先使用 Tasker 选项里面的 数据 → 备份 可以备份所有配置和任务; 数据 → 还原 → 手工备份 选择 xml 文件可以还原所有配置和任务,不过这种方法会 覆盖所有原有的数据 。也就是说这个只能用于刚安装 Tasker 时还原之前的数据。

AFvqmuB.png!web

在你想要备份的任务/配置/场景上长按之后可以选择单独导出这个任务/配置,而点按不同的标签栏可以单独导入不同类型的备份文件。以我们上面的复制验证码为例:​

  • 配置文件 标签上点按,选择 导入 ;选择我们下载好的「收到验证码短信.prf.xml」。

  • 任务 标签上点按,选择 导入 ;选择我们下载好的「复制验证码.tsk.xml」。

    QjayUbV.png!web

​这样就能完整导入整个复制验证码的 Tasker 啦。

结语

​动手制作完成第一个「神奇」操作的感觉如何?通过实践大家应该对 Tasker 有了初步的了解,只要开始学习使用它,无论自己动手制作还是从各处收集导入各种神奇的任务,它都将渐渐地,默默地满足我们更多的需求,给我们的生活带来更多的便利。 ​

> 订阅 Power+ ,阅读更多提升生产力的文章,善用数字工具,让工作高效起来 :muscle:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK