在Android/Java上,一个连接下载了多少字节?
我正在编写的安卓应用程序涉及大量内容下载(想想podcatcher/RSS) 我想让用户知道他们下载了多少字节,这样他们就可以决定是否使用Wifi 为此,我找到了一种计算应用程序读取的字节数的方法,方法是将在Android/Java上,一个连接下载了多少字节?,java,android,inputstream,billing,urlconnection,Java,Android,Inputstream,Billing,Urlconnection,我正在编写的安卓应用程序涉及大量内容下载(想想podcatcher/RSS) 我想让用户知道他们下载了多少字节,这样他们就可以决定是否使用Wifi 为此,我找到了一种计算应用程序读取的字节数的方法,方法是将InputStream包装在一个简单的CountingInputStream中 然而,这并没有考虑诸如包头和HTTP头之类的基本内容。更重要的是,它没有考虑内容可能被编码的任何压缩 那么,我的应用程序通过网络下载了多少字节?我对上传的字节数不太感兴趣,但如果知道怎么做,请不要害羞 在将输入流输
InputStream
包装在一个简单的CountingInputStream
中
然而,这并没有考虑诸如包头和HTTP头之类的基本内容。更重要的是,它没有考虑内容可能被编码的任何压缩
那么,我的应用程序通过网络下载了多少字节?我对上传的字节数不太感兴趣,但如果知道怎么做,请不要害羞
在将输入流输入XML解析器时,我采用了一种相当低级的方法。我还需要做一个类似的练习,将字节(本例中的图像)直接转储到SD卡上
这是最好的方法吗?我错过了什么?ufff。。。我认为这对底层协议来说是非常透明的,所以您不能计算会话或链接层中使用的所有字节,而且操作员甚至喜欢对最终用户看不到的控制字节收费。此外,他们还计算两个方向的流量(您对服务器的请求也需要一些),所以好的问题是:如何衡量下载图片所需的流量/资金 这不是一个直接的答案,但你可以试着询问以前解决过类似问题的人,例如数据计数器应用程序。我使用了Cyril Jaquier()的NetCounter,他声称他的软件是开源的。我无法让他的下载链接工作,但有一个联系电子邮件地址。如果你得到了他的源代码,你应该能够使用与他相同的方法。正如我所知,有两种方法可以计算数据流量。一个是在名为netCounter的android应用程序中提到的/sys/class/net/{interface}/statistics,另一个是在名为wifi tether的android应用程序中使用的/proc/net/dev。但我不知道这两种方法之间的区别,也不知道哪种方法更好。特定应用程序接收的字节数存储在/proc/uid\u stat//tcp\u rcv中,其中app\u uid是特定设备上应用程序的uid 这使用/sys/class/net/${interface}/statistics/rx_字节,即:系统范围(我需要特定于应用程序的);和平台相关-您引用的应用程序必须解决一些移植问题。总而言之,这是一个很好的建议,但对我来说可能是太低了一层。谢谢,谢谢。我一定会看看这个。