移动终端 2013 年 4 月 29 日

用Tasker制作一个简单的流量统计插件

本文介绍如何使用Tasker制作一个简单的流量插件,该插件可以自动检测当前网络类型并显示上下行流量信息。文章通过演示显示了在WIFI和移动网络下的流量信息。文章还介绍了插件的原理,通过在Android系统中执行特定的shell命令获取网络信息来实现。该插件可以帮助用户更好地管理其数据使用情况,避免超出流量限制带来的额外费用。
本文将介绍使用Tasker制作一个简单的流量插件,插件能够自动判断当前的网络类型(WIFI/移动网络),并精确显示当前网络的上行和下行流量信息。
data usage notify
显示WIFI网络和手机网络的流量信息简单演示:
wifi data
mobile data

原理

如果在Android系统执行下面一条shell:
# 查看网络信息
busybox ifconfig
我们可以得到类似以下的输出结果:
eth0      Link encap:Ethernet  HWaddr 88:30:8A:5F:E8:96    
          inet addr:192.168.1.101  Bcast:255.255.255.255  Mask:255.255.255.0  
          inet6 addr: fe80::8a30:8aff:fe5f:e896/64 Scope:Link  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
          RX packets:2185 errors:0 dropped:58 overruns:0 frame:0  
          TX packets:2131 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:1000   
          RX bytes:1278033 (1.2 MiB)  TX bytes:907559 (886.2 KiB)  
  
lo        Link encap:Local Loopback    
          inet addr:127.0.0.1  Mask:255.0.0.0  
          inet6 addr: ::1/128 Scope:Host  
          UP LOOPBACK RUNNING  MTU:16436  Metric:1  
          RX packets:566 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:566 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:0   
          RX bytes:112686 (110.0 KiB)  TX bytes:112686 (110.0 KiB)  
从上面的输出我们可以看到ech0网卡信息的最后一句里有详细的RX信息和TX信息,我们可以通过一些简单的shell命令提取并重新整合成我们需要的形式。
上面只有WIFI网卡的信息和本机回环的信息,如果需要移动网络的信息,我们可以在命令后面加上移动网卡的参数:
#获取网卡信息
busybox ifconfig rmnet0  
命令执行后输出的信息:
rmnet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00    
          inet addr:10.109.155.102  P-t-P:10.109.155.102  Mask:255.255.255.255  
          POINTOPOINT NOARP  MTU:1500  Metric:1  
          RX packets:2527 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:2979 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:1000   
          RX bytes:1845666 (1.7 MiB)  TX bytes:364713 (356.1 KiB)  
我们可以使用同样的方法取RX和TX信息。
最后就是判断当前连接的网络了,如果是WIFI网络就显示WIFI的流量信息,如果是移动网络就显示移动网络的流量信息。歉意使用Tasker对”%WIFII”变量做简单的正则匹配就可以做到了。
最后配置一个Task,将上面的信息整合传到Minimalistic Text显示就可以了。配置文件下载: data_usage.tsk v2,下载完成后在Tasker的Task标签导入。
data usage task

Minimalistic Text 的配置

新建一个3X1的插件,增加一个本地变量,变量名称为”%DDU”,如下图:
add variable
最后配置一下显示的更新,我们设定每次点击插件时更新流量信息,所以要在MT的点击动作里让Tasker运行更新任务。MT的完整配置下载: data_usage_display,下载后在MT的挂件列表里导入即可。