手机“宏”让生活更方便(初用华为“场景”功能)
前言:本文是想给没有技术背景的同学提供一个傻瓜化的用手机满足个性化需求的思路,就像在FF14中没有编程经验的光呆们也可以利用宏提升游戏体验一样。不是广告,其他品牌的手机肯定也提供了类似功能,但因为我手上只有华为手机,所以用华为场景做例子来讲这个问题。

事情的起因是这样的。最近几年由于各种原因体重飙升,现在比状态最好的时候重了20多斤,考虑到肌肉的流失,实际增肥可能超过30斤。本来前段时间恢复了公园快走,没想到我们这又来了一次小爆发,期间做了6次全员核酸检测,于是又停了。我觉得这么下去不行,决定在家锻炼。考虑到大体重的膝盖问题,不敢跑步,买了一台最高时速6公里、连扶手都没有的低端杂牌走步机(买好的怕浪费了,毕竟之前有过用健身器材晾袜子的经历)。为了兼顾锻炼效果和保护膝盖,暂定了一个30分钟、6个阶段的伪HIIT概念的快走程序:
① 5min 热身(3~5km/h渐进)
② 5min 适应(5.5km/h)
③ 6min 冲刺(6km/h)
④ 4min 放松(5km/h)
⑤ 6min 冲刺(6km/h)
⑥ 4min 放松(5km/h)
问题是这款走步机太低端了,没有内置程序,更没有自定义程序功能,只有一个遥控器用来调节速度和查看时间、速度、里程等数据,如果靠自己掌握时间,就要经常看遥控器,非常不方便,所以我必须想个方法,能让手机在各阶段开始时自动提醒我调节速度。随着身体状态的恢复,锻炼强度肯定是要逐渐增大的,所以这个方法还要方便将来增减阶段和调整各阶段的时间。另外,如果提醒不是铃声而是自定义的语音就更好了。
需求有了,接下来就要想解决方案。首先,自己写APP肯定不行,我没做过移动开发,虽说可以学,这种功能的APP应该也不难,但我锻炼急等着用,现学现写就本末倒置了,估计单是开发测试环境的搭建调试和APP的首次部署就要花不少时间;其次,我平时只用一些基础APP,对市面上各种功能五花八门的工具类APP完全不了解,挨个试用挺花时间,也未必能完全贴合我的需求。这时,我想到了华为手机自带的智慧生活APP有个“场景”功能,可以让用户傻瓜化的编排和使用系统的一些常用功能,也许能满足我的需求。
经过一番鼓捣,我把这个“快走”场景编排了出来,如下图(滚动截图,有点大):

之前看过我的FF14宏专栏的光呆们可能会发现,这玩意不就是个宏吗?对,它就是个宏,一个运行在手机中的宏。如果在FF14中用宏来实现这个功能,应该是这样的:
/默语 开始锻炼,5分钟热身,逐渐提速至5公里每小时 <se.9>
<等待.300>
/默语 提速至5.5公里每小时 <se.9>
<等待.300>
/默语 6公里每小时冲刺,第一次 <se.9>
<等待.360>
/默语 5公里每小时放松 <se.9>
<等待.240>
/默语 6公里每小时冲刺,第二次 <se.9>
<等待.360>
/默语 5公里每小时放松 <se.9>
<等待.240>
/默语 锻炼结束,逐渐降速 <se.9>
其实,无论是华为的场景,还是FF14的宏,都可以理解为一种简单的软件开发,即根据自己的需求,利用平台提供的功能模块和接口,编制一款运行于前述平台上的简单软件。在FF14宏中,平台就是FF14,编制的软件就是宏;在华为场景中,平台就是安装了智慧生活APP的华为操作系统,编制的软件就是场景。
从软件开发的角度来说,这个“场景”功能不但门槛低、用户友好性强(毕竟是图形化操作界面,不需要写代码),还有丰富的任务模块、生效条件和触发机制可供选择。编排场景的界面如下(主界面、添加条件界面、添加任务界面,连续三个大图):



“条件”就是什么时候、什么情况下执行这个场景,“任务”就是你想让场景做的事,一个场景可以添加多个条件、多个任务。
因为篇幅原因,上面的“添加条件”和“添加任务”界面展示的只是第一级菜单,实际上每个类别点进去还有更具体的内容,可添加的条件和任务是非常丰富的。以任务为例,单单在“系统功能”这个类别里能执行的任务就包括:调节手机的音量、亮度,开启和关闭振动、免打扰、飞行模式,开启和关闭WLAN、蓝牙、移动网络、个人热点,打开和关闭指定APP,控制音频类APP的播放(网易云音乐、酷狗、喜马拉雅等常见APP都支持),命令手机关机或重启等。在其他类别中,还有操控智能家居设备、导航、播报日程和天气、给指定的微信联系人发消息和位置、出示健康码和付款码等常用功能,有兴趣的同学可以自行发掘一下,基本上你能想到的事它都能做。条件部分主要是对位置、时间、天气、本机状态等进行的判断,这里就不详述了,我觉得是基本够用的。
另外有两个地方需要特别说明一下:
1. 在“添加条件”界面中,条件分为两大类:触发事件和生效条件,两者的作用是不同的。触发事件指的是在发生什么事时手机会执行该场景,比如在我的“快走锻炼”场景中,手动点击该场景卡片或对小艺说“开始锻炼”都会触发该场景(请参照上面我的“快走锻炼”场景截图)。而生效条件是对执行场景增加的额外限制条件,比如我想让系统提醒我下班回家后在小区超市买个什么东西再上楼,就可以把触发事件设置为“与车载蓝牙断开时”,这样一旦我停车熄火,系统就会提醒我,但我又不想让它在我上班或去别的地方停车熄火时也提醒,这时就可以增加一个生效条件“在家附近”。注意:如果一个场景只设置了生效条件而没有设置触发事件,该场景是不会被系统直接执行的。
2. 在“添加任务”界面中,除了各类常规任务,还有“控制场景”和“小艺技能”选项(小艺技能应该是可以执行指定场景的),这两个选项为场景的嵌套提供了可能,即在一个场景中调用另一个场景(至于系统是否允许场景调用自身或者场景A调用B、B再调用A来形成“递归”,暂时还不清楚),这在编排某些功能复杂的场景时应该会非常有用,比如当你想为场景中某个具体的任务设定执行条件时,就可以把这个任务做成一个带生效条件的子场景,然后由母场景去调用它。不过这只是我基于程序员思维的推测,这个特性我还没试过,因为暂时没有这方面的需求。

结语
智慧生活APP的“场景”功能已经发布很久了,由于当时没有需求,我只是稍微了解了一下,一直没用过,这次试了试,没想到还挺好用的(那个“快走锻炼”场景我已经用了好多天了),而且深入了解后发现功能强大得超出我的预期,于是就写了这篇专栏。当然,华为场景的推出主要是为了智能家居生态的构建,但它其实是一个通用的个性化程序定制平台,能实现的功能远不止操控智能家居设备。
让没有编程技术的用户傻瓜化的定制自己的个性化程序已经是一个趋势,在上面那个“快走”案例中,我就是一个没有编程技术的用户,因为我完全不懂移动开发,但我只花了十几分钟就定制出了自己的第一个“场景”,在此过程中没用到任何编程知识。
事实上,这种低门槛的定制在生产端早已普遍应用,最常见的例子就是Excel的宏,它使得没有任何技术背景的办公人员可以用“录制”这种无门槛的操作极其方便的定制自己的个性化程序,生产端的很多其他各类专业软件上也有类似的功能。
随着智能手机的大规模普及、智能家居的逐步推广和用户使用经验的增加,是时候把这种低门槛定制普及到消费端了。希望本文能为还没有使用过此类功能的朋友打开一扇通往更方便的生活的大门。