我写了一个小的android应用程序,发送Http请求,从服务器接收响应,并计算传输和接收的字节数。代码如下longreceivedBytes=TrafficStats.getUidRxBytes(uid)-lastNumer我发现receivedBytes总是大于httpHeader+httpBody的大小,例如我在服务器中捕获(使用wireshark)的实际http帧大小为1645字节(header+正文),但androidAPI返回receivedBytes为1912,因此传输。TrafficStatsgetUidRxBytes本身不准确(可能这个问题是我的平台samsungi9
下面是用字符串返回数据计数器值的类。我想将String格式化为KB、MB和GBpublicclassMainActivityextendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextViewinfoView=(TextView)findViewById(R.id.traffic_info);Stringinfo="";longgetmobilerxby
我正在尝试使用TrafficStats获取移动数据使用情况。例子:mobileDataUsage=TrafficStats.getMobileRxBytes()+TrafficStats.getMobileTxBytes()totalUsage=TrafficStats.getTotalRxBytes()+TrafficStats.getTotalTxBytes()在少数设备中,它工作得非常好。在Nexus5X中,我得到totalUsage但mobileDataUsage始终为0,TrafficStats.getMobileRxBytes()和TrafficStats.getMobil
我正在开发一个应用程序,它允许在android上检查wifi和移动流量统计信息。这就是我获得统计数据的方式:longmobileStats=TrafficStats.getMobileRxBytes()+TrafficStats.getMobileTxBytes();longwifiStats=TrafficStats.getTotalRxBytes()+TrafficStats.getTotalTxBytes()-mobileStats;不幸的是,wifiStats似乎不仅仅是wifi,因为即使我在智能手机上禁用wifi,它也会为我提供大量数据。我认为getTotalRxBytes(
我写了一个不错的小Android应用程序来检查数据使用情况,不幸的是它严重依赖于Froyo(Android2.2)引入的android.net.TrafficStats。我正在尝试为我的非Froyo用户反向移植此类,以及我能够从Androidsource中确定的内容是:TrafficStats.java只是指向c文件的native指针c文件打开两个文件(见下文)并读取它们的内容如果其中一个包含数值,它会将其吐回作为“使用的字节数”计数这是我的挑战...当我通过设备上的API调用TrafficStats时,我得到了一个读数(例如1113853字节)。当我打开这两个文件并检查它们的内容时,
现在互联网接入非常昂贵。供应商使用非常收费。我们不使用无限制的互联网计划。这就是为什么我想开发一个可以计算(管理)网络包/数据使用的设施。假设我已经激活了5GB数据计划。那么我需要在上网、上传/下载东西之前检查。我知道一些数据提供商提供这些设施。我想通过我的应用程序捕获我的android设备上的网络数据包。但是我怎样才能在我自己的代码中做到这一点。任何帮助将不胜感激。提前谢谢 最佳答案 请检查。TextViewinfoView=(TextView)findViewById(R.id.traffic_info);Stringinfo=
(我认为这是一个常见问题,但请不要太快将其标记为重复,因为我相信我的回答为讨论增添了新内容。)相关的API是TrafficStats,它从例如获取数据/proc/uid_stat/.统计信息必须包括GCM等,而不仅仅是我发起的内容,因此基于线程和标记的计数器是不够的。第一个问题是明显缺少基于UID(即每个应用程序)获取移动数据使用情况的API。有getMobileAPI和getUidAPI,但没有结合它们的API。我在下面提出一个解决方案作为一个答案。更重要的是,我的印象是TrafficStats有太多错误,无法用于此一般用途。我也把它作为一个可能的答案,如果它被接受,那么最好的解决方
我试图弄清楚我使用OkHttpClient发送的请求具体使用了多少我的应用程序数据,我发现我可以使用TrafficStats标记线程,然后使用标记查看它的网络Activity。如果我做类似的事情TrafficStats.setThreadStatsTag(1234);okHttpClient.execute(request);然后它实际上将它标记为okay(ish),但是当我使用异步方法(okHttpClient.enqueue(request))时它没有标记(这很明显,但我希望他们'd对此有支持)。所以我尝试了一些事情:为客户端设置一个调度器,它是一个普通的调度器,基本上在每次执行时
当手机处于2G或3G时,如何混合/加入以下两个代码以分别计算TX和RX字节?我有以下代码来识别手机何时连接到似乎有效的EDGE或UMTS网络,并在显示屏上显示Toast消息。publicclassMainActivityextendsAppCompatActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TelephonyManagertelephonyManag
对Android的TrafficStats的以下两种方法有疑惑:getUidTxBytes(intuid)和getUidRxBytes(intuid),这两个方法返回通过网络为此UID传输和接收的字节数。但是它的时间单位是什么,是每秒吗?如果我想计算每个应用程序每天传输和接收的数据,我应该怎么做。我想到了一种方法,将数据存储在sql中并继续向表中添加数据。方法对吗? 最佳答案 这些是“自接口(interface)启动以来”或“自具有此UID的应用程序启动以来”的计数器。也就是说,如果您的手机进入“飞行模式”然后返回,计数器可能会再次