2012-02-06 5 views
3

Использование Android TelephonyManager Приложение может получать состояние активности данных по сотовой сети. Например, активность идет, выходит, или и то, и другое. Мне интересно, знает ли кто-нибудь о способе получения той же информации, когда устройство подключено с помощью Wi-Fi? В Ice Cream Sandwich (4.0.3, я думаю) у них есть эта информация, доступная как для Wi-Fi, так и для телефона, но до этого она предназначена только для телефона (WifiManager не был обновлен этой информацией до релиза Ice Cream Sandwich).android wifi active data transfer

В принципе, я хочу, чтобы проверить, активно ли данные передаются телефоном/планшетом при подключении к сети Wi-Fi (а не только к Wi-Fi подключен). Эти данные не должны быть инициированы мной; Я просто хочу знать, активно ли данные перемещаются.

Есть ли у кого-нибудь идеи, как это можно достичь? Я довольно новичок в Android и хотел бы, чтобы эта информация удостоверилась, что мое приложение не делает ничего плохого. Заранее благодарим за любые мысли.

ответ

1

Я тоже искал это, и у меня нет идеального ответа, но вы можете получить приблизительные данные, используя API TrafficStats.

У меня есть кусок кода, который отстреливается от времени по таймеру и несколько переменных класса под названием 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; 

это работает, хотя я хотел бы ответить лучше, если вы найти его.

+0

даже если нет подключения к Интернету, часть загрузки положительна. , , Я думаю, что только часть загрузки имеет смысл. –