tasker 中文文档 下载 App

Tasker 夜间模式自动化 从简单定时到日出日落动态调整

什么是好的夜间模式

很多人以为"夜间模式 = 屏幕变深色"。一个好的 Tasker 夜间模式应该覆盖:

维度应该变化的设置
视觉深色/夜间模式开、屏幕亮度大幅降低、屏幕超时延长(但不是永不关)
声音勿扰模式、通知音量静音、振动关闭、仅闹钟允许发声
网络Wi-Fi 可保留(下载后台更新)、移动数据可关闭、蓝牙可关闭
电池省电模式、降低后台刷新、限制后台活动
通知只有紧急联系人/闹钟通过

把所有这些设置打包进一个 Profile,就是一个完整的夜间模式。

基础版:定时夜间模式

Profile 设计

Profile:夜间睡眠模式
  Context:Time → 23:00 - 次日 07:00

Enter Task(完整的进入动作):
  1. Night Mode → 强制开(系统级深色模式)
  2. Auto Brightness → Off
  3. Brightness Percent → 10%(极低亮度但不摸瞎)
  4. Screen Timeout → 1 分钟
  5. Do Not Disturb → 完全静默(或仅闹钟)
  6. Ringer Volume → 0%
  7. Vibration → Off
  8. Bluetooth → Off
  9. Mobile Data → Off(可选,如果想彻底断网)
  10. Wi-Fi → On(保留下载/备份)
  11. Power Save Mode → On
  12. Notify(常驻)→ "夜间模式 · 07:00 后恢复"

Exit Task:
  1. Night Mode → 跟随系统(或强制关)
  2. Auto Brightness → On
  3. Screen Timeout → 30 秒
  4. Do Not Disturb → Off
  5. Ringer Volume → 恢复(用变量保存的值)
  6. Vibration → On
  7. Bluetooth → On
  8. Mobile Data → On
  9. Power Save Mode → Off
  10. Notify → "已退出夜间模式"

跨午夜时间窗口的处理

Time Context 设置 23:00 到次日 07:00 时,Tasker 自动处理跨午夜——开始时间晚于结束时间就意味着"到次日同一时间结束"。

Exit Task 会在 07:00 准时执行,恢复所有设置。

进阶版:根据日出日落动态调整

固定时间的问题:冬季天黑得早,夏季天黑得晚。你可能希望:

Tasker 没有内置日出日落时间,但可以通过以下方式实现:

方案一:调用天气 API

Profile:根据日出日落调整夜间模式
  Time → 21:00 - 08:00(宽范围,粗筛)
  AND
  State → Variable Value → %IsNightTime = 1(由 API 决定)

# %IsNightTime 由另一个定时 Task 更新:
Task:定时更新日出日落
  Time → 每天 18:00(或更频繁,如每 6 小时)
  1. HTTP Request → 从 OpenWeather / 其他 API 获取当前位置的日出日落时间
  2. JavaScriptlet → 比较当前时间与日出日落,设置 %IsNightTime = 1 或 0

方案二:基于屏幕状态和传感器

Profile:屏幕长时间关闭 → 自动进入睡眠辅助模式
  State → Display State = Off
  AND
  State → Proximity Sensor(手机在口袋/枕边)= Near
  AND
  Time → 22:00 - 07:00

Enter Task:执行夜间睡眠辅助动作(比完整夜间模式温和,因为可能只是打个盹)
Exit Task:屏幕开 → 自动恢复

进阶版:阅读模式与夜间模式叠加

在夜间模式下打开阅读 App(电子书、漫画、网文)时,亮度应该再降低一点、屏幕超时应该延长一点:

Profile:夜间阅读模式
  State → Night Mode Profile 已激活
  AND
  App → 阅读类 App(小说 App / 漫画 App / Kindle)

Enter Task:
  1. Brightness Percent → 5%(更暗)
  2. Screen Timeout → 5 分钟
  3. Display Sleep → Off(自动亮屏,不手动关)
  4. Say → "阅读模式已开启"(如果是语音控制)

Exit Task(退出阅读 App 时):
  1. Brightness Percent → 10%(恢复夜间基础亮度)
  2. Screen Timeout → 1 分钟
  3. Display Sleep → 恢复正常

进阶版:充电 vs 不充电的区别

充电时可以保留更多后台功能(因为不耗电),不充电时要更激进:

Enter Task:
  # 先检查是否在充电
  If → %CHARGING = 1
    # 充电中:温和的夜间模式
    Do Not Disturb → 仅闹钟
    Bluetooth → On(保持智能手表连接)
    Power Save Mode → Off(反正插电了)
  Else
    # 不充电:激进省电
    Do Not Disturb → 完全静默
    Bluetooth → Off
    Power Save Mode → On
    Mobile Data → Off
  Endif

进阶版:"就寝"和"起床"两个 Profile

把夜间模式拆成两个独立 Profile 更灵活:

Profile 1:进入就寝(23:00 触发)

Enter Task:
  # 设置当前时间戳
  Variable Set %SleepStartTime, %TIME
  # 执行完整夜间进入动作
  ...
Exit Task:(不再需要,由 Profile 2 覆盖)

Profile 2:起床(07:00 触发)

Enter Task:
  # 计算睡眠时间
  JavaScriptlet:
    var start = tasker.getGlobal("%SleepStartTime");
    // 计算差值...
    tasker.setGlobal("%SleepDuration", "8 小时");
  # 显示睡眠时长(健康追踪)
  Notify → "昨晚睡了 %SleepDuration"
  # 恢复所有设置
  ...

这样可以额外实现睡眠追踪、起床闹钟、晨间推送天气等扩展。

退出时的"软恢复"

Exit Task 里恢复所有设置时,考虑用渐变而不是瞬间切换:

Exit Task:
  1. Brightness Percent → 20%(先不一下子到 100%)
  2. Wait → 30 秒
  3. Brightness Percent → Auto

这样从夜间低亮度切到白天时眼睛不会被突然晃到。

夜间模式的调试

如果发现 Exit Task 没按时执行:

更多排查见 Profile 不触发怎么办。