【问题标题】:How to find wifi and network data usage separately by particular application in android?如何通过android中的特定应用程序分别查找wifi和网络数据使用情况?
【发布时间】:2013-11-30 10:37:20
【问题描述】:
recived = TrafficStats.getUidRxBytes(uid);
send = TrafficStats.getUidTxBytes(uid);

TrafficStats.getMobileRxBytes(); 
TrafficStats.getMobileTxBytes(); 

TrafficStats.getTotalRxBytes();
TrafficStats.getTotalTxBytes();

我有应用程序 ID,我可以获取该应用程序数据使用情况,但我无法获取更详细的信息,例如使用 wifi 和网络的数据使用情况。我想为设备中所有已安装的应用程序分别查找两者。我怎么能找到那个。?我已经尝试了很多东西,但没有得到任何解决方案。

【问题讨论】:

    标签: android android-wifi android-networking


    【解决方案1】:

    遗憾的是,从 API 级别 19 开始,没有公共 API 可以获取该信息;您已经列出了公开可用的 TrafficStats API。 Android 使用内部 API 来实现,所以除非你打算走这条路(这是一个非常糟糕的想法,Google 极力劝阻),否则你现在运气不好。

    编辑
    如果您坚持使用内部 API 并冒着代码在各种 API 版本中被破坏的风险,请参考以下链接并务必通读:
    Recompiling Android SDK to use hidden and internal APIs
    Recompiling Android SDK for Gingerbread and later

    一旦你实现了这个,这个文件将为你提供最大的帮助:

    packages/apps/Settings/src/com/android/settings/fuelgauge/BatteryStatsHelper.java

    您必须从文件中复制大量代码,或者查找processAppUsage() 函数并提取您需要的任何内容。特别是,寻找这些行:

            // Add cost of wifi traffic
            final long wifiRx = u.getNetworkActivityCount(NETWORK_WIFI_RX_BYTES, mStatsType);
            final long wifiTx = u.getNetworkActivityCount(NETWORK_WIFI_TX_BYTES, mStatsType);
    

    最后一点:Android 只是在 KitKat (API 19) 中更改了此代码,并且将来可能会再次更改。一旦他们决定再次更改,我怎么强调这将如何破坏您的应用程序。

    【讨论】:

    • 那么数据管理器和网络监视器应用程序是如何工作的??
    • 在内部,Android 中有一些方法能够对每个 UID 的数据使用情况进行细分,并确定什么是移动数据与什么是 wifi 数据。然而,谷歌迄今选择不将这些公开给第三方开发者使用。如果您希望使用内部 API 来获得访问权限,正如我所提到的,它现在可以工作,但只要 Google 下次更改他们的代码(就像他们从 4.3 -> 4.4 所做的那样),它就有可能中断。
    • 此外,此处发布的有关跟踪 Wifi 连接时的连接更改然后自己进行数学计算的其他方法将使您非常接近,但不能保证所有数据使用都超过 Wifi只是因为 Wifi 已连接。因此,任何不这样做并声称能够单独获取这些值的人都在使用内部 API。
    • 你能告诉我如何使用内部 API 吗?
    【解决方案2】:

    我认为你应该使用其他方式,通过 UID 获取流量,例如 — getUidRxPackets(int uid)

    也有帮助(如何获取 UID):(How to get all apps installed on android phone)

    编辑:

    你能告诉我如何确定 wifi 使用了多少数据吗? 手机。??

    有一个很好的答案——android statistic 3g traffic for each APP, how? 看看他的逻辑。

    【讨论】:

    • 我很清楚这一点。但正如我已经说过的,许多应用程序都是这样制作的,这就是我要求这样做的原因。
    • 我已经尝试了所有的兄弟。你能告诉我如何确定 wifi 和移动设备使用了多少数据吗??
    • 请先了解我的问题兄弟。你还是不明白。
    • 为什么,我认为这是您在上面回答的解决方案:stackoverflow.com/a/12837108/1990485,消息底部他解释了他的逻辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    相关资源
    最近更新 更多