获取Android数据使用历史记录的最深入细节

时间:2016-06-29 04:14:36

标签: android linux network-programming

我需要获取Android设备的数据使用历史记录。

我可以拥有以下哪些功能?以及如何?

1-Daily data usage or even hourly.

2-From the last device data wipe date to now.

3-Contains application details.

注意

I don't want to monitor and save data usage history.

I want to have it all after installing the application.

**Please** tell if there is more than one way And also if thy need Root access 
Or if they work on a specific API version.

1 个答案:

答案 0 :(得分:0)

在过去,我想捕获设备的数据使用情况而不对其进行监视。我当时唯一知道的方法是在后台使用服务捕获所有内容,我认为这会占用大量CPU。 (TrafficStats是当时的唯一方法)

要回答其他可能看到的问题,我应该说以下话。

  • 从API 23开始,有一个名为NetworkStatsManager的函数 可以做到这一点。我还应该链接到this answerhis work on github
  • 根据Google文档,您可以获取Long.MIN_VALUE和Long.MAX_VALUE之间的任何时间段的数据使用情况。

      

    查询可以以开始和结束的形式定义时间间隔   时间戳记(Long.MIN_VALUE和Long.MAX_VALUE可用于模拟   开放式间隔)。

  • 您可以根据其他应用程序的UID来使用它们,然后可以使用它们来查找程序包名称等。(Referral project

  • documentation中有5种方法。

      

    摘要查询

         

    querySummaryForDevice(int,String,long,long)

         

    querySummaryForUser(int,String,long,long)

         

    querySummary(int,String,long,long)

         

    这些查询汇总整个时间间隔内的网络使用情况。   因此,对于一个特定的键,状态,   计费和漫游组合。在整个用户范围内   设备范围内汇总包含汇总网络的单个存储桶   用法返回。

         

    历史查询

         

    queryDetailsForUid(int,String,long,long,int)

         

    queryDetails(int,String,long,long)

         

    这些查询不会随时间汇总,但会根据状态汇总,   计费和漫游。因此,对于一个   特定的键。但是,所有存储桶都将具有状态   NetworkStats.Bucket.STATE_ALL,默认网络   NetworkStats.Bucket.DEFAULT_NETWORK_ALL,已计量   NetworkStats.Bucket.METERED_ALL,漫游   NetworkStats.Bucket.ROAMING_ALL。