Android 从TrafficStats计算中排除某些流量

Android 从TrafficStats计算中排除某些流量,android,Android,我正在使用监视我的应用程序的数据使用情况。到目前为止,它还可以正常工作 但是我想通过NewWork将这些数据实时发送到我的服务器(比如每秒使用量)。如果我只是按原样使用代码,从我的应用程序到服务器的流量也将添加到发送和接收的字节中。这是不可取的。我想排除发送到服务器的数据 一个可能的解决方案是,我的应用程序可以创建另一个“应用程序”,从而创建一个新的UID。然后,我只能监视父应用程序的流量统计。但这需要大量代码更改和一些副作用(比如一个应用程序被终止/暂停,而另一个应用程序没有) 我还可以使用方

我正在使用监视我的应用程序的数据使用情况。到目前为止,它还可以正常工作

但是我想通过NewWork将这些数据实时发送到我的服务器(比如每秒使用量)。如果我只是按原样使用代码,从我的应用程序到服务器的流量也将添加到发送和接收的字节中。这是不可取的。我想排除发送到服务器的数据

一个可能的解决方案是,我的应用程序可以创建另一个“应用程序”,从而创建一个新的UID。然后,我只能监视父应用程序的流量统计。但这需要大量代码更改和一些副作用(比如一个应用程序被终止/暂停,而另一个应用程序没有)

我还可以使用方法
TrafficStats.setThreadStatsTag(int-tag)
来标记套接字 并仅使用标记的套接字对我的服务器进行网络操作。然后我可以从总数中减去这个,得到想要的结果。请帮助我如何实现这一点

另一个解决方案是监视服务器接收和发送的数据,这样我就可以从包含每秒流量的数据中减去这些数据。但问题是,我无法理解从每秒数据的特定间隔中减去多少


如果您对我提到的可能解决方案或任何其他解决方案有任何想法,我们将不胜感激。谢谢。

线程和套接字标记可以用于DDMS目的,以允许对您自己的应用程序进行分析和调试。在这种情况下,需要指定要标记的线程/套接字,然后将数据输出到DDMS。 请注意,Android 4.0.3仅完全支持此功能。 您可以找到有关实现的详细信息

如果您有兴趣跟踪自己的应用程序数据使用情况,而不包括报告机制生成的数据,您可以创建另一个应用程序来跟踪您的应用程序数据使用情况。在这种情况下,您需要实施一些黑客攻击,绕过TrafficStats API,该API目前在Android 4.3中已被破坏,不允许您为自己的UID之外的其他UID收集统计数据。 你可以看到这个线程来进一步理解,你可以找到确切的解决方案

如果您确切地知道您的报告机制生成了多少流量,您可以使用进程UID上的TrafficStats API监控您自己的应用程序,并从结果中减去该流量。TrafficStats API允许当前的TCP字节提取,这意味着您可以使用Wireshark/tcpdump计算为报告机制发送的TCP字节数