我正在试图找出如何检索单独的移动(蜂窝/ 3G / 4G)数据使用情况以及按应用程序细分的单独WIFI使用情况。我看到android.trafficstats有getUidRxBytes / getUidTxBytes,但文档说它提供了从所有接口使用的字节。
我的问题是,有没有办法将Wifi和手机上使用的内容分开?如果是这样,怎么办呢?
答案 0 :(得分:3)
您可以使用getMobileRxPackets()来分解移动/ wifi数据。查看TrafficStats
答案 1 :(得分:2)
我有一个想法来解决它......
步骤1.检查WiFi移动中的网络连接类型(使用ConnectivityManager,NetworkInfo等...)。
步骤2.使用SQLite记录数据(getUidRxBytes + getUidTxBytes)和标记(如果与wifi连接,将'w'写入SQLite),例如:
------------
_id | uid | data | tag
1 123 10 w
2 123 50
------------
步骤3.最后,uid of 123此应用的移动使用数据为40(50-10)
有任何建议,欢迎分享......
答案 2 :(得分:0)
简答: 除非您的应用程序使用系统密钥签名,否则我不相信有办法执行此操作。
长答案: 我也一直试图这样做。 ICS设置应用程序在“数据使用”部分中执行此操作。我稍微挖了一下ICS源代码,但到目前为止,我还没能确切知道它是如何完成的。它不在TrafficStats类的本机实现中。
我相信它的日志记录部分位于ICS源的NetworkStats和NetworkStatsHistory类中。 NetworkStatsService似乎收集了数据。我还没有找到确切的方法,或者在他们正在访问的光盘上存档。
答案 3 :(得分:0)
你可以检查android如何实现getUidRxBytes / getUidTxBytes方法。
在android_net_TrafficStats.cpp中,他们都读取了“/ proc / net / xt_qtaguid / iface_stat_fmt”和“/ proc / net / xt_qtaguid / stat”中的文件。
在“/ proc / net / xt_qtaguid / stat”中,你可以获得uid使用的字节,这些字节是android分开的wifi和移动数据。