Tasker 工作时自动静音 多条件精准触发 离开自动恢复
场景描述
需求:到公司时手机自动静音,离开时自动恢复。不只是简单的"在公司 Wi-Fi 就静音"——还要考虑:
- 周末不该静音
- 在公司开会时静音要更彻底(包括震动)
- 午休可以放开一点
- 下班自动恢复,不用手动操作
基础版实现
Profile 设计
Profile:工作时段自动静音
Context 1:State → Wi-Fi Connected → SSID 包含 "公司"(或直接指定公司 Wi-Fi 名)
AND
Context 2:Time → 09:00 - 18:00
AND
Context 3:Day → 周一 / 周二 / 周三 / 周四 / 周五
Enter Task:
1. Ringer Volume → 0%(静音来电)
2. Do Not Disturb → 仅闹钟(允许闹钟响,屏蔽其他通知)
3. Vibration → Off(同时关闭震动)
4. Notify(常驻)→ "工作模式开启,18:00 后恢复"
Exit Task:
1. Ringer Volume → 恢复(可以设固定值或用变量保存之前的音量)
2. Do Not Disturb → Off
3. Vibration → On
4. Notify → "工作模式已关闭"
关键设计点
为什么用 Wi-Fi 而不是 GPS:
- Wi-Fi SSID 检测比 GPS 省电得多
- GPS 在室内通常没信号
- 公司 Wi-Fi 覆盖范围就是"公司范围"的天然围栏
Time + Day 的组合:
- Time Context 本身不区分工作日/周末
- 用 Day Context 限制周一到周五
- 两个 AND 组合 = "工作日的 9-18 点"
Exit Task 的自动恢复:
- 离开公司 Wi-Fi(下班 / 出门开会)或过了 18:00 后自动执行
- 恢复到非静音状态,不需要任何手动操作
进阶版:午休时段放开
需求:午休(12:00-13:30)可以短暂恢复声音。
方案:变量叠加第三个 Context
Profile:工作时段自动静音
Context 1:State → Wi-Fi Connected → 公司 Wi-Fi
AND
Context 2:Day → 周一至周五
AND
Context 3:
Time → 09:00-12:00
OR
Time → 13:30-18:00
# 午休 12:00-13:30 不触发 → Profile 自然退出 → Exit Task 恢复音量
然后再建一个 Profile 专门处理午休恢复:
Profile:午休恢复声音
Context:
State → Wi-Fi Connected → 公司 Wi-Fi
AND
Day → 周一至周五
AND
Time → 12:00-13:30
Enter Task:
1. Ringer Volume → 40%(适度放开,但不要太大影响同事)
2. Do Not Disturb → Off
3. Notify → "午休模式"
两个 Profile 互相配合:一个在非午休时段静音,一个在午休时段放开。
进阶版:会议室深度静音
需求:如果在公司且日历里有正在进行的会议 → 进入更深层的静音模式(包括震动、通知、媒体全部关闭)。
实现
Profile:会议中深度静音
Context:
Calendar → 正在进行中的事件(需连接 Google 日历 / Exchange)
AND
State → Wi-Fi Connected → 公司 Wi-Fi
Enter Task:
1. Ringer Volume → 0%
2. Media Volume → 0%
3. Do Not Disturb → 完全静默
4. Vibration → Off
5. Torch → Off
6. Notify(常驻)→ "会议中,深度静音模式"
7. Say → "已进入会议静音模式"(如果有蓝牙耳机)
Exit Task:
1. Ringer Volume → 恢复到正常工作模式的值
2. Media Volume → 恢复
3. Do Not Disturb → 仅闹钟
4. Vibration → On
5. Notify → "会议结束"
注意这个 Profile 的优先级——它应该覆盖"工作时段自动静音"——因为进入会议 Profile 时,工作时段的静音可能还在生效。可以用"重叠 Profile 叠加"的方式,让会议 Profile 的设置更彻底。
进阶版:保存与恢复音量
Exit Task 里"恢复音量"是个技术问题——之前的音量是多少?如果在进入静音前你手动调低了音量,Exit Task 恢复到固定值反而不对。
用变量保存音量
在工作时段 Profile 的 Enter Task 最开头加:
1. Variable Set %OldRing, %VOLR ← 保存当前铃声音量
2. Variable Set %OldMedia, %VOLM ← 保存当前媒体音量
3. Ringer Volume → 0%
4. Do Not Disturb → ...(后面正常的静音操作)
Exit Task:
1. Ringer Volume → %OldRing ← 恢复到 Enter 之前的值
2. Media Volume → %OldMedia
3. Do Not Disturb → Off
这样无论之前是什么音量,都能精确恢复。
避免误触的额外保险
保险一:手动覆盖开关
创建一个全局变量 %ManualOverride:
默认值 = 0(正常自动模式)
当你临时需要在公司里开声音时 → 桌面 Shortcut → 设置 %ManualOverride = 1
工作时段 Profile 的 Context 叠加:
AND
State → Variable Value → %ManualOverride = 0
这样按一下 Shortcut 就能临时禁用自动静音,再按一下恢复自动。
保险二:会议日历检测
前面会议室静音 Profile 已经覆盖了"正在开会时应该更深静音"——这是工作静音的正确增强,不是保险。
保险三:自定义例外地点
如果你有时在公司附近(咖啡馆、便利店)但不想静音,可以叠加位置 Context:
Profile 的 Context 添加:
AND
NOT State → Location → 公司(半径 200 米内)
完整的工作时段自动化
把上面所有组件拼起来:
| Profile | 作用 |
|---|---|
| 工作时段自动静音 | 工作日 9-18 点 + 公司 Wi-Fi → 正常静音 |
| 午休恢复 | 工作日 12-13:30 + 公司 Wi-Fi → 适度放开 |
| 会议深度静音 | 有日历会议 + 公司 Wi-Fi → 完全静音 |
| 手动覆盖开关 | Shortcut 触发变量 → 临时禁用所有静音 Profile |
| 每日自动备份 | 工作结束 18:30 → 自动备份 Tasker 配置 |
这个组合覆盖了"正常工作 → 午休 → 开会 → 临时例外 → 数据安全"的完整链条。