Matrix 首页推荐
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
Tasker 5.10 更新又来咯。之前在测试版第一时间适配的 Android 11 电源菜单控件正式上线,并且下放了 AutoApps 中的 Command 系统到 Tasker 中。
有点听不懂了?没关系,下面先介绍这两个新东西,再通过简单的实例来完成一些自动化任务,相信能让你快速上手 Tasker 的新功能。
Tasker 与电源菜单的搭配
本次更新的一大亮点是支持了 Android 11 的电源菜单 —— 如果你还不知道这是个什么功能,可以前往 这篇文章 了解更多。
Tasker 新版围绕电源菜单主要带来了三个新功能:
- 添加任意现有的任务到电源菜单
- 新增了电源菜单动作(Power Menu Action),可以用于动态地添加电源菜单控件
- 新增了电源菜单出现事件
下面我们来一一介绍。
直接添加现有任务
对于现有的任务,可以直接添加为电源菜单的控件,类似于下拉快速设置开关的磁贴。但在把任务添加到电源菜单之前,我们不妨先来简单区分以下下拉快捷设置和电源菜单的使用场景。
- 快捷设置:比较高频的系统设置项,仅支持开关
- 电源菜单:官方示例是智能家居的控制中心,可以作为一个升级版的个性化快捷设置中心——方便控制更细粒度的应用或设备行为、方便添加控件(毕竟快捷中心的磁贴拖动添加简直反人类)、支持更多种类操作。
除此之外,谷歌也在有意地减少磁贴和增加通知在下拉菜单的占比,每页甚至只有 6 个磁贴,还需要下拉两次加上滑动才能触及一些自定义磁贴,因此电源菜单作为一个快捷设置的「替代」或「补充」都是很有必要的。
不过电源菜单控件和快速设置开关最大的不同在于,除了可以点击开关之外,我们还可以通过拖动来改变一些数值。因此 Tasker 的电源菜单控件也可以分为以下几种:
- 普通的任务:点击之后执行一次任务
- 使用
%par1
变量的任务:点击会切换%par1
的值为true
或者fasle
- 使用
%par1
和%par2
变量的任务:额外可以调节%par2
的数值
三者所对应的、最常见的使用例子就是执行任务的按钮(Button)、开关灯(Toggle)、开关并调节灯的亮度(Toggle Range)。
使用 Tasker 将类似的操作添加到电源菜单控件也非常简单:首先把 Tasker 加入电源菜单,点击右上角三点 > 添加控件 > 查看更多应用,就可以看到 Tasker 里面的任务列表,直接勾选就可以添加。
通过电源菜单动作添加
直接添加现有任务应该是最简单和直接的方法。但是并不能定制控件副标题的显示内容,如下图所示,右边是直接添加得到的样式,左边是通过执行电源菜单动作添加的效果。虽然功能上是完全一致的,但是对于有点强迫症的我来说,把下方显示的 Trigger 字样干掉还是有必要的。
另外电源菜单动作的加入意味着我们可以通过不同事件来触发增加/修改/删除控件的任务,从而实现动态控件的效果。官方给的示例是在不同的情境下(家或公司、早上或晚上)控件可以打开不同的应用,这个例子可能实用性并不是很大,后面会通过另一个动态控件的例子来说明。
用命令系统串起自动化任务
某种程度上命令系统的引入其实是为了配合电源菜单控件而来的,因此本次更新也加入了原本需要额外购买 AutoApps 的命令系统(Command System)。简单来说,命令系统可以通过在任务间传递固定格式的文本来传递数据、启动任务,它包含两个基本组件:
- 命令动作(Command Action)—— 在任务中发送命令
- 命令事件(Command Event)—— 作为事件触发新的任务
具体的使用可以参考这个链接中的内容。一个完整的命令的组成结构如下:
prefix=:=text1=:=text2..
除了命令前缀是必需的之外,后面都是可以按需自定义的。在命令事件接受的时候,就可以按照 prefix
进行过滤,接受后面的文本信息。这里有一个坑就是后面解析出来的都是字符串,如果传递数字的话注意匹配成数字。
回到电源菜单控件上,操作电源菜单控件可以自定义发送如下几种形式的命令(与直接添加部分的很类似)。比如拖动一个类似调节灯光亮度的控件至 50.0
,设置命令的前缀为 alllight
,则 Tasker 会发送一个 alllight=:=true=:=50.0
的命令。这样我们设置一个命令为 alllight
的事件,就可以进行实际的灯光调控任务,同时也相应更新控件的状态。
配置文件与实例分享
首先给出实战所有的 工程链接,点击导入整个项目即可(其中灯光控制部分需要安装并设置好 Yeelight,对了,它支持 Tasker!)。项目导入会自动执行创建控件的任务,执行完毕之后可以前往电源菜单把控件添加到界面中。
注意其中的一些任务需要根据自己的实际情况进行修改,比如监测文件的路径、Yeelight 灯组的设置等等。
1 直接添加任务为控件
这个比较简单,看下面的例子就应该能懂得要领。直接新建一个任务,%par1
用来作为灯亮和灯灭的状态,%par2
用来作为灯的亮度数值。
完成之后直接在电源菜单添加即可。下面展示的是如何用一个控件控制所有灯光开关和亮度(其实只有俩):
2 通过电源菜单动作添加
这里会稍微复杂一点点,因为会用到命令系统。先从简单的开始讲起,也就是按钮(Button)类型的控件。这里的两个按钮控件分别会执行这样的任务:
- 剪切板链接跳转:把复制的文本中的 URL 给提取出来并打开,适用于被某绿色应用给屏蔽的某橙色应用的链接,可以直接通过系统进行链接处理,节省了打开浏览器复制访问的操作。
- 微信文件分享:点击分享最新下载的微信文件。
具体实现可以查看上面导入的控件任务中 ID 为 wechatshare
和 cliplink
的电源菜单动作。以微信分享这个控件为例,它的实际工作流程如下:
- 创建控件并添加
- 点击控件,发送格式为
pma=:=wechatshare
的命令 - 被
Command pmd*
的命令事件所接收,命令参数wechatshare
传入控件任务,并执行「分享最新微信文件」的任务
我们继续加深,来到开关控件部分。
这里明显不同的是,控件本身是记录状态的,因此在执行完任务之后,需要额外更新控件的状态。比如这里「切换黑暗模式任务」,在执行黑暗模式切换之后,会根据现在的状态 %new_state
更新控件的开关状态。
继续加大力度,我们来做一个类似于前面直接添加的调整所有灯光的控件。具体实现流程如下:
- 创建控件并添加
- 操作空间,发送格式为类似
alllight=:=true=:=50.0
的命令 - 被
Command alllight*
的命令事件所接收,命令参数传入%light()
数组,%light1=true, %light2=50.0
,最后执行下图的灯光调节和控件更新任务
3 动态控件的实现
首先描述一下使用场景:当下载文件夹有新文件时,显示为分享最新下载文件控件;当拍摄新照片之后,显示为分享最新照片控件。
基本流程如下:
- 创建任一控件,ID 为
share
,之后更新时 ID 保持一致 - 当
Download/
文件夹被修改时,触发「创建分享最新下载控件」任务;当DCIM/Camera
文件夹被修改时,触发「创建分享最新照片控件」任务 - 两个控件点击后分别发送为
send=:=newphoto or send=:=newdownload
的命令 - 被
Command send*
的命令事件所接收,执行相应的分享任务
结语
如果你有更多电源菜单控件的奇思妙想或实现方法,或是在导入、操作的过程中遇到什么问题,不妨在评论区留言交流。
玩得开心!
关联阅读: