Я делаю софт для воспроизведения онлайн-видео, и я пытаюсь добавить функцию статистики трафика для софта.Я пытаюсь использовать TrafficStats и функцию getUidRxBytes.однако, он не учитывает чистый трафик videoview.Как и в следующем коде, я вижу, что rx (возвращаемое getTotalRxBytes) сильно увеличивается, но myapprx (возвращаемое getUidRxBytes) не меняется.
int uid = VideoViewPlayer.this.getApplicationInfo().uid;
long rx = TrafficStats.getTotalRxBytes();
long tx = TrafficStats.getTotalTxBytes();
long myapprx = TrafficStats.getUidRxBytes(uid);
long myapptx = TrafficStats.getUidTxBytes(uid);
String info = "uid:"+uid+" rx:"+rx+" tx:"+tx+" myrx:"+myapprx+" mytx:"+myapptx;
ОБНОВЛЕНИЕ
СпасибоВо-первых, ваш комментарий дает мне важную подсказку.И я пытаюсь найти UID, отвечающий за пропаривание медиа.Я использую следующий код. Однако я не могу найти процесс, который потребляет трафик.
List<ActivityManager.RunningAppProcessInfo> appProcessList = am.getRunningAppProcesses();
ActivityManager.RunningAppProcessInfo info=null;
//List<ActivityManager.RunningServiceInfo> appProcessList = am.getRunningServices(100);
//ActivityManager.RunningServiceInfo info = null;
strinfo = "";
long max =0;
for(int i=0;i<appProcessList.size();++i)
{
info = appProcessList.get(i);
String key = info.processName+"_" +info.uid;
if(mNetTraffic.containsKey(key))
{
long myrx = TrafficStats.getUidRxBytes(info.uid);
long lastrx = mNetTraffic.get(key).longValue();
mNetTraffic.put(key, new Long(myrx));
if(myrx-lastrx>max && myrx - lastrx>0)
{
max = myrx-lastrx;
strinfo = key +":"+max;
}
}else
{
long myrx = TrafficStats.getUidRxBytes(info.uid);
mNetTraffic.put(key, new Long(myrx));
}
}
//trying to watch the key and max and find process and uid, sadly cant find it