Tasker 两大新功能,电源菜单也能成为你的效率中心
2020-10-20 16:28:53 Author: sspai.com(查看原文) 阅读量:225 收藏

Matrix 首页推荐

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

文章代表作者个人观点,少数派仅对标题和排版略作修改。


Tasker 5.10 更新又来咯。之前在测试版第一时间适配的 Android 11 电源菜单控件正式上线,并且下放了 AutoApps 中的 Command 系统到 Tasker 中。

有点听不懂了?没关系,下面先介绍这两个新东西,再通过简单的实例来完成一些自动化任务,相信能让你快速上手 Tasker 的新功能。

Tasker 与电源菜单的搭配

本次更新的一大亮点是支持了 Android 11 的电源菜单 —— 如果你还不知道这是个什么功能,可以前往 这篇文章 了解更多。

Tasker 新版围绕电源菜单主要带来了三个新功能:

  • 添加任意现有的任务到电源菜单
  • 新增了电源菜单动作(Power Menu Action),可以用于动态地添加电源菜单控件
  • 新增了电源菜单出现事件

下面我们来一一介绍。

直接添加现有任务

对于现有的任务,可以直接添加为电源菜单的控件,类似于下拉快速设置开关的磁贴。但在把任务添加到电源菜单之前,我们不妨先来简单区分以下下拉快捷设置和电源菜单的使用场景。

  • 快捷设置:比较高频的系统设置项,仅支持开关
  • 电源菜单:官方示例是智能家居的控制中心,可以作为一个升级版的个性化快捷设置中心——方便控制更细粒度的应用或设备行为、方便添加控件(毕竟快捷中心的磁贴拖动添加简直反人类)、支持更多种类操作。
一加的 OOS 一页保留了 8 个磁贴位置

除此之外,谷歌也在有意地减少磁贴和增加通知在下拉菜单的占比,每页甚至只有 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 为 wechatsharecliplink 的电源菜单动作。以微信分享这个控件为例,它的实际工作流程如下:

  1. 创建控件并添加
  2. 点击控件,发送格式为 pma=:=wechatshare 的命令
  3. Command pmd* 的命令事件所接收,命令参数 wechatshare 传入控件任务,并执行「分享最新微信文件」的任务
剪切板链接跳转的效果

我们继续加深,来到开关控件部分

这里明显不同的是,控件本身是记录状态的,因此在执行完任务之后,需要额外更新控件的状态。比如这里「切换黑暗模式任务」,在执行黑暗模式切换之后,会根据现在的状态 %new_state 更新控件的开关状态。

切换之后更新控件状态

继续加大力度,我们来做一个类似于前面直接添加的调整所有灯光的控件。具体实现流程如下:

  1. 创建控件并添加
  2. 操作空间,发送格式为类似 alllight=:=true=:=50.0 的命令
  3. Command alllight* 的命令事件所接收,命令参数传入 %light() 数组,%light1=true, %light2=50.0,最后执行下图的灯光调节和控件更新任务
调节灯光并更新控件状态

3 动态控件的实现

首先描述一下使用场景:当下载文件夹有新文件时,显示为分享最新下载文件控件;当拍摄新照片之后,显示为分享最新照片控件

基本流程如下:

  1. 创建任一控件,ID 为 share,之后更新时 ID 保持一致
  2. Download/ 文件夹被修改时,触发「创建分享最新下载控件」任务;当 DCIM/Camera 文件夹被修改时,触发「创建分享最新照片控件」任务
  3. 两个控件点击后分别发送为 send=:=newphoto or send=:=newdownload 的命令
  4. Command send* 的命令事件所接收,执行相应的分享任务

结语

如果你有更多电源菜单控件的奇思妙想或实现方法,或是在导入、操作的过程中遇到什么问题,不妨在评论区留言交流。

玩得开心!

关联阅读:

© 本文著作权归作者所有,并授权少数派独家使用,未经少数派许可,不得转载使用。

yzlnew


文章来源: https://sspai.com/post/63211
如有侵权请联系:admin#unsafe.sh