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