Android Tasker应用之农历节气和自定义节日小插件

Android平台上虽然支持农历的插件不少,但找来找去都没找到满意的,最终还是决定用Tasker和Minimalistic Text自己做一个,效果似乎不错,如图:

lunar widget

主要功能:

  • 1、阳历日期及星期显示
  • 2、农历年、日期显示
  • 3、节气显示和预测
  • 4、农历节日显示
  • 5、阳历节日显示
  • 6、自定义纪念日、长辈生日等显示

功能是不是很全呢?下面一起来定制这样一个插件。

STEP 1: 农历和节日算法

由于这个挂件涉及了大量的数据处理,使用Tasker自带的流程控制显然比较难实现,这里我们使用了Javascript来做这部分处理。

点此下载 lunar.zip,解压后放到/sdcard/Tasker/download目录。

打开lunar.js文件,你可以看到一系列已经定义好的节日,其中LunarHolidays是农历节日和纪念日,yangliHolidays是阳历节日和纪念日。你可以将自定义的纪念日,长辈的农历生日添加进去,格式为月日节日

add custom holidays

说明:

代码中使用了收集自网络的农历算法,来源如下:

由于网络资源的高冗余性,我无法确定农历算法和节气算法的原作者,在此深表歉意!如果你是上面提到两份代码的原作者,欢迎联系我注明版权信息,谢谢!

STEP 2: 创建Tasker桌面显示任务

由于操作比较繁琐,这里直接提供好我配置好的任务,点此下载:lunar_date_to_MT.tsk_.zip,解压后在Tasker的Tasks标签下导入。

任务打开后是这样的:

lunar date to MT task

从上图可以看出这个任务的主要功能就是将%myangli%mlunar%jieqi%holiday的值传给Minimalistic Text显示,其中%holiday包含农历节日、阳历节日和自定义节日。这四个值全部由lunar.js计算(STEP 5),你可以不必关注具体的实现过程。

请点击右下角的“播放”按钮运行一次(这样做的目的是计算一次局部变量值并发给Minimalistic Text,在配置Minimalistic Text时可以直接显示)。

STEP 3: 配置Minimalistic Text 显示

在主屏上添加一个2x2的Minimalistic Text插件,将布局改成Custom Layout后进入自定义布局设置。

在STEP 2中Tasker传递了四个变量,因此在Minimalistic Text需要接收这四个变量并显示。

Add(点“+”号) -> Misc -> Local Variable,变量名称写%DYANGLI,样式可以自己定义,如下图:

custom layout

重复上面的步骤添加另外三个变量,名称分别为%DNONGLI%DJIEQI%DHOLIDAY。保存退出,桌面上已经能显示农历了。

STEP 4: 自动和手动更新日期

由于日期每天都会变,插件上的农历当然也需要自动改变。

考虑到省电方面,建议大家通过闹钟来触发插件的更新(大部分人早上都应该有个闹钟吧?),起床闹钟一响,插件上的日记和节日就自动更新了。大部分人可能一天有几个闹钟,比如晚上的睡觉闹钟,因此需要在加一个时间段限制,比如只有在早上7点到9点的闹钟响起时才会自动更新。

最终的Profile下载:auto_update_lunar_on_alarm.prf,解压后在Tasker的Profile标签页下导入:

update lunar on alarm profile

这里还有一个问题:插件的显示是在每天早上闹钟响时更新的,万一半夜2点想看一下农历呢(此时显示还是昨天的)。解决这个问题最好的办法就是添加一个手动更新快捷键:当点击桌面的文字时触发更新插件任务。

在Minimalistic Text中打开农历插件的Preferance ,在Tab behaviorStart another activity ,然后点Select an activity or shortcut 打开对话框,在对话框的Shortcuts 标签下选择Tasker 的Task Cut ,然后选择lunar date to MT 任务就完成了。

select activity

select task cut

OK,手动更新配置完成,只要点一下插件的文字就可以手动更新了,方便那些半夜睡不着觉想看农历的...

关键字:tasker, android, minimalistic_text

本文链接:树叶的BLOG >> Android Tasker应用之农历节气和自定义节日小插件

本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议进行许可。

上一篇 : Android Tasker应用之自动调节屏幕亮度 下一篇 : Android Tasker应用之自动查询并显示话费流量套餐信息