Android TrafficStats.getTotalRxBytes不计算videoview';交通流量

Android TrafficStats.getTotalRxBytes不计算videoview';交通流量,android,android-videoview,traffic,Android,Android Videoview,Traffic,我正在制作一个用于播放在线视频的软件,我正在尝试为该软件添加一个流量统计功能。我尝试使用TrafficStats和getUidRxBytes函数。然而,它并不计算videoview的净流量。 像下面的代码一样,我可以看到rx(通过getTotalRxBytes返回)增加了很多,但是myapprx(通过getUidRxBytes返回)没有改变 int uid = VideoViewPlayer.this.getApplicationInfo().uid; long rx = TrafficStat

我正在制作一个用于播放在线视频的软件,我正在尝试为该软件添加一个流量统计功能。我尝试使用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
List-appProcessList=am.getrunningappprocesss();
ActivityManager.RunningAppProcessInfo=null;
//List-appProcessList=am.getRunningServices(100);
//ActivityManager.RunningServiceInfo=null;
strinfo=“”;
长最大值=0;
对于(int i=0;imax&&myrx-lastrx>0)
{
max=myrx lastrx;
strinfo=key+“:”+max;
}
}否则
{
long myrx=TrafficStats.getUidRxBytes(info.uid);
mNetTraffic.put(键,新长(myrx));
}
}
//试图查看key和max并查找进程和uid,遗憾的是找不到它

流媒体应该针对不同的UID进行报告,因为它实际上是由Android内部进程和模块(OpenCORE或StageFright,取决于Android版本)流式传输和播放的。

我也遇到了同样的问题,并设法找出了进程中流媒体的UID:UID是1013


希望有帮助:)

首先谢谢,你的评论给了我重要的线索。我正试图找到uid对媒体的热播负责。我使用下面的代码。