如何编写服务以跟踪Android设备上的gprs数据使用情况

时间:2013-08-01 09:19:50

标签: android android-service

我想在android中编写一个服务,它将跟踪后台的数据使用情况。当捕获数据使用事件时,我会将详细信息保存在本地数据库中。

我在android中读到了关于TrafficStats的类,但是只有在活动开始时它才会检查一次。我想要一个连续的后台进程。

我甚至找到了一个示例项目 - https://github.com/commonsguy/cw-andtuning/tree/master/TrafficMonitor

如帖子中所述 - How to measure data usage of my app

提前致谢。

1 个答案:

答案 0 :(得分:3)

您需要执行以下操作:

  • 创建一个存储数据使用值的本地数据库。

  • 启动连续/定期运行的服务,以计算/重新计算数据使用情况。

  • 服务计算数据使用后,将数据添加到数据使用表中。

要创建本地数据库,您可以参考tutorial

上的sqlite

以下是启动服务的方法Creating a Service in Android

修改

如果有任何新的数据使用,则无法获得通知。您必须使用将连续或定期运行的服务定期检查。

您可以使用以下代码计算用法:

int UID=Process.myUid();
long recived = TrafficStats.getUidRxBytes(UID);
long send = TrafficStats.getUidTxBytes(UID);

根据您的要求,您可以使用的其他功能包括:

long initialRX = TrafficStats.getTotalRxBytes();// recieved
long initialTx = TrafficStats.getTotalTxBytes();// sent
long initialMobRX = TrafficStats.getMobileRxBytes();
long initialMobTx = TrafficStats.getMobileTxBytes();

请记住,即TrafficStats会返回一个累计值。因此,您必须减去initail值才能知道使用量的增量

当电话关闭时,每当进程被杀死时,TrafficStats计数器都会被重置。因此,您必须添加代码来处理它。

相关链接:
TrafficStats Api android and calculation of daily data usage