【问题标题】:How to write a service to keep track of gprs data usage on android device如何编写服务以跟踪 android 设备上的 gprs 数据使用情况
【发布时间】:2013-08-01 17:55:30
【问题描述】:

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

我在 android 中阅读了有关 TrafficStats 类的信息,但它只会在活动开始时检查一次。我想要一个连续的后台进程运行。

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

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

提前致谢。

【问题讨论】:

标签: android android-service


【解决方案1】:

您需要执行以下操作:

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

  • 启动一个连续/定期运行的服务来计算/重新计算数据使用量。

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

要创建本地数据库,您可以在sqlite 上参考这个tutorial

这里是您如何启动服务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 返回一个累积值。因此,您必须减去初始值才能知道使用量的增量

也每当进程被杀死时,TrafficStats 计数器就会被重置。例如,当手机关闭时。因此,您将不得不添加代码来处理它。

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

【讨论】:

  • 感谢拉奇塔。但我的问题是当数据使用事件发生时服务将如何得到通知。以及如何捕捉数据使用事件。
  • 如果使用了任何新数据,则无法获得通知。您必须使用将连续或定期运行的服务定期检查它。我将在我的编辑中添加所有这些以回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多