Descubra quanto tráfego de rede outros aplicativos Android geram

Estou tentando criar um serviço em segundo plano que deve medir o uso do tráfego de vários aplicativos para poder mostrar ao usuário quais aplicativos consomem mais tráfego de dado

Descobri que o aplicativo Spare Parts faz exatamente isso, mas depois de instalá-lo em um dispositivo Dell Streak 1.6, sempre recebo "Não há dados de uso da bateria disponíveis" para "Uso da rede". Esta função funciona em peças de reposição? Além disso, não consegui encontrar um código fonte de trabalho para peças de reposição.

https: //android.googlesource.com/platform/development/+/froyo-release/apps/SparePart
parece estar desatualizado ou incompleto. (?)

Mas as peças de reposição parecem medir, por exemplo, Uso da CPU por aplicativo. Como isso acontece em um telefone não rootead

Minha idéia geral de como o tráfego por aplicativo pode ser medido é verificar regularmente o

"sys/class/net/" + sWiFiInterface + "/statistics/rx_bytes"

"sys/class/net/" + sWiFiInterface + "/statistics/tx_bytes"

"sys/class/net/" + sMobileInterface + "/statistics/rx_bytes"

"sys/class/net/" + sMobileInterface + "/statistics/tx_bytes"

files e para ver qual aplicativo atualmente tem foco e, portanto, é mais provável que cause o tráfego de rede gerad

nfelizmente, não consigo encontrar como obter o aplicativo atualmente em foc

Eu achei isto

ndroid, como obter informações sobre qual atividade está sendo exibida no momento (em primeiro plano

mas parece que é um teste, não apenas um serviço de festa em 3D em execução no dispositivo Android não-rootead

Podemos obter com quais atividades estão sendo executadasActivityManager.getCurrentTasks(), mas qualquer um deles pode ser o foco. Parece que os arquitetos do Android explicitamente não querem que os aplicativos de festa em 3D saibam qual aplicativo está focado, devido a questões de segurança

(Vejohttp: //android.bigresource.com/Track/android-zb2mhvZX4).

Existe uma maneira de contornar isso?

Além disso, se eu quiser não apenas detectar quais atividades consomem mais tráfego, mas também quais serviços, posso obter todos os serviços atualmente em execução comActivityManager.getCurrentSerives() e até veja para cada uma delas se estiver no modo de primeiro plano (ao contrário de ser descartado se o Android precisar de recursos). Mas isso de novo não me leva tão long

Alguma ideia

questionAnswers(1)

yourAnswerToTheQuestion