如何从其他应用程序通过Wi-Fi获取传输数据量?

时间:2013-08-26 21:12:48

标签: android-wifi android

我正面临着这个问题。我花了很多时间搜索一些API“某些东西”,因为它可以通过其他应用程序的Wi-Fi获取传输的数据(截图如下所示)。

有人知道如何做到这一点吗?在这里有人试过(或已经做过)类似的事情吗?或者有点不同:这可能吗?

目前我认为这是不可能的因为我认为非系统应用程序无法从设备上安装的其他应用程序检索数据。但也许我可以“失踪”一些事情,所以我提出了这个问题,并且会对任何建议感到高兴。

提前致谢!

enter image description here

3 个答案:

答案 0 :(得分:5)

TrafficStats

Class that provides network traffic statistics. These statistics include bytes transmitted and received and network packets transmitted and received, over all interfaces, over the mobile interface, and on a per-UID basis.

这意味着你可以使用 getUidTxBytes 来获取整个传输数据,到目前为止 getUidRxBytes 可以获得整个接收数据。

您可以通过以下方式获取应用程序的 UID

getApplicationInfo().uid 

或其他应用程序请参阅THIS

答案 1 :(得分:3)

虽然Sercan的答案是正确的,但必须警告您TrafficStats并不总能保证给您正确的统计数据。基本上,TrafficStats将检查目录/ proc / uid_stat / 1094 /中的文件以及此目录下的tcp_snd,tcp_rcv等各种文件。在某些设备上,这些(伪)文件不会更新。因此,您应该始终检查UNSUPPORTED(-1)http://developer.android.com/reference/android/net/TrafficStats.html#UNSUPPORTED

的返回值

此外,通常这些统计数据还没有包括UDP数据。因此,您报告的数字对于使用UDP的应用程序(如VoIP应用程序)是错误的。有关详细信息,请查看 https://code.google.com/p/android/issues/detail?id=32410

在最新的Android版本中,还有另一个/ proc文件可以为您提供大量详细信息。这是在/ proc / self / net / xt_qtaguid / stats。但是这个伪文件只会显示应用程序读取的统计信息。任何Android应用都会尝试阅读此文件,但不会获得与任何其他Android应用相关的统计信息。

答案 2 :(得分:0)

为什么不尝试阅读包含网络信息的配置文件? 试试这个: adb shell cd / proc / uid_stat / XXXX(Proc id) cat tcp_rcv / tcp_snd