Android Tasker应用之统计手机每天的使用时间

你是手机控吗?你每天花多少时间在手机上呢?后面这个问题可能比较难精确地回答,不过有了Tasker,我们就可以将答案精确到秒了。这篇文章将介绍如何使用Android的Tasker软件做一个精确统计手机使用时间的应用,并通过Minimalistic Text在桌面上显示。

先上一张粗略的效果图:

phone usage time

原理:手机的使用时间实际上就是亮屏的时间,将每次屏幕点亮到屏幕熄灭的时间间隔加起来,就是总的使用时间了。

开始之前请先安装好Tasker和Minimalistic Text两个软件,一个后台处理数据,一个前端显示。推荐下载地址:

1、添加全局变量

在Tasker里新建三个全局变量,并将初始值设为0。

%MPLAYDATE    //今天的日期  

%MPLAYTIME    //总的手机使用时间  

%MPLAYSTART  //开始使用(屏幕点亮)的时间点  

global variables

2、 屏幕点亮时更新点亮时间和显示

如果你觉得过程比较复杂,请直接下载我配置好的Profile导入到Tasker中,点此下载 Count_play_time_1_.prf(下载后解压)。

在Tasker里新建一个Profile,名为Count usage time(1)(这里的1主要是应为我们还有另外一个屏幕熄灭的情景模式),确定 ->添加Event ->Display -> Display on,然后新建一个匿名Task,如下图:

add task

这里需要做的就是在屏幕点亮时将手机运行时间保存在开始时间%MPLAYSTART中,另外如果日期更新,还需要需要重新设置统计日期并将新的一天的使用时间设为0。这里的日期判断涉及到Tasker的IF流程控制,详细步骤:

STEP 1 : 如果统计日期不是今天,那么就需要更新日期并重设使用时间.

Add(点击"+") ->Task ->IF,条件为%MPLAYDATE  (Not Match) %DATE;

[caption id="attachment_762" align="alignnone" width="383"]check date check date[/caption]

Add --> Variable -> Variable Set,%MPLAYDATE (To) %DATE;

Add -> Variable -> Variable Set%MPLAYTIME (To) 0;

Add -> Task -> End If

STEP 2: 保存屏幕点亮时间

Add -> Variable -> Variable Set%MPLAYSTART (To) %UPS;

screen on task s

STEP 3: 发送到Minimalistic Text 显示

我们需要将总的使用时间变成时分秒的格式发送到Minilimalistic Text。新建一个本地变量%mplaytimestr用于保存发送到Minimalistic Text的使用时间字符串值,并将初始值为"-",如下图:

playtime string

接下来就是%mplaytimestr的计算了,我们使用javascriptlet来处理。

Add -> Script -> Javascriptlet,将下面的代码输入:

var playtime = global('MPLAYTIME');  

var playtimeH = Math.floor(playtime/3600);  
var playtimeM = Math.floor(playtime % 3600/60);  
var playtimeS = Math.floor(playtime % 60);  
mplaytimestr = playtimeH + ":" + playtimeM + ":" + playtimeS; 

最后一步就是将结果发送到Minimalistic Text的本地变量中,这里将这个变量设为%DPLAYTIME

push playtime

3、屏幕熄灭时更新手机使用时间

配置文件下载:Count_play_time_2_.prf

这里需要做的就是当屏幕熄灭时,将从点亮到熄灭这一段的时间片加到总的使用时间中。

在Tasker里新建一个Profile,名为Count usage time(2),确定 -> 添加Event-> Display -> Display off,然后新建一个匿名Task。

Add-> Script -> Javascriptlet (这里没有选择Javascript的原因是代码较少,不需要保存在SD卡中),添加下面的代码:

var mplaytimeend = parseInt(global('UPS'));  
// do nothing if not today, the date will be reset on next screen on  
if(global('DATE') == global('MPLAYDATE')) {  
    // MPLAYSTART is 0 only if manually set  
    if(global('MPLAYSTART') != 0 ) {  
        // when phone start, the old MPLAYSTART value may be larger  
        if(mplaytimeend > parseInt(global('MPLAYSTART')) ) {  
            var newplaytime = parseInt(global('MPLAYTIME')) + mplaytimeend - parseInt(global('MPLAYSTART'));  
             setGlobal('MPLAYTIME', newplaytime);          
        }  
    }  
}  

这里考虑到了一些可能导致错误的原因如日期错误、开始时间%MPLAYTIME为0(除非认为设置,否则这个Uptime值不可能为0)等,如果你觉得可能会出现其他问题导致错误的话欢迎留言交流。

4、配置Minimalistic Text显示

在主屏上添加一个2*1的Minimalistic Text 插件,在Predefined layout里选Cuscom...,点击Custom layout进入自定义布局设置。

Add(点"+"图标) -> Misc -> Local Variable,变量名输入%DPLAYTIME,这样就能接收Tasker发送过来的使用时间值。你还可以添加一些其它的文字美化一下。

minimalistic-text-config

到这里这个应用就全部完成了,亮屏再关屏几次看下效果吧。

更新日志

2012-11-10:
请下载过2012-11-10之前的配置文件的朋友重新下载,将之前的配置文件删除后重新导入。

  • 修复了使用时间出现负数和"-"的问题,之前一个版本是因为没有将变量强制转换成整型;
  • 更新了工作机制,上个版本的显示更新是在屏幕关闭时进行的,现在改为屏幕点亮时更新,屏幕关闭时将使用时间保存。

关键字:tasker, android, minimalistic_text

本文链接:树叶的BLOG >> Android Tasker应用之统计手机每天的使用时间

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

上一篇 : 免费获取25G的Box.net空间 下一篇 : Android Tasker应用之自动调节屏幕亮度