3

使用 Android TelephonyManager应用程序可以通过蜂窝网络获取数据活动的状态。例如,活动正在进来、出去或两者兼而有之。我想知道是否有人知道在使用 Wifi 连接设备时获取相同信息的方法?在冰淇淋三明治(我认为是 4.0.3)中,他们为 Wifi 和电话提供了此信息,但在此之前,它仅适用于电话(WifiManager 直到冰淇淋三明治发布时才更新此信息)。

基本上,我希望能够检查连接到 Wifi 网络时手机/平板电脑是否正在主动传输数据(不仅仅是连接了 Wifi)。该数据不必由我发起;我只想知道数据是否正在积极移动。

有谁知道如何实现这一目标?我对 Android 还很陌生,希望获得此信息以确保我的应用程序不会做任何坏事。提前感谢您的任何想法。

4

1 回答 1

1

我也一直在寻找这个,但我没有一个完美的答案,但你可以使用 TrafficStats API 获得某种近似数据。

我有一段代码偶尔会被计时器和几个名为 totalDownload 和 totalUpload 的类变量触发...

long newTotalDownload = TrafficStats.getTotalTxBytes();
long newTotalUpload = TrafficStats.getTotalRxBytes();

long incDownload = newTotalDownload - totalDownload;
long incUpload = newTotalUpload - totalUpload;

if (incUpload > 0)
{
    //data was being uploaded in the last time period
}
if (incDownload > 0)
{
    //data was being downloaded in the last time period
}
//set up for the next iteration
totalDownload = newTotalDownload;
totalUpload = newTotalUpload;

它有效,但如果你找到一个,我想要一个更好的答案。

于 2012-02-06T12:05:56.953 回答