91获取手机应用使用的流量的原理

本文介绍了一个用于Android设备上的流量统计的应用程序,通过使用TrafficStats API,开发者能够获取应用的上传和下载流量信息,包括UID级别的详细数据。文章展示了如何利用这些API来遍历已安装的应用并收集它们产生的网络流量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在2.3之前,可以进入手机的shell下的proc下的uid_stat文件,下面有很多文件夹,每个文件夹以UID命名,在该文件夹下有两个文件,这两个文件就是用户上传和下载的流量。


可以访问这个文件得到数据,Android2.3以后,有了好用的API。

package com.ustc.mobilemanager;

import java.util.List;

import android.app.Activity;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.net.TrafficStats;
import android.os.Bundle;
import android.view.Window;
import android.widget.SlidingDrawer;


/**
 * 
 *proc/uid_stat/uid/tcp_snd
 * 
 * @author Administrator
 *
 */

public class TrafficManagerActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		
		
		
		PackageManager pm = getPackageManager();
		
		List<ApplicationInfo> applicationInfos = pm.getInstalledApplications(0);
		
		for (ApplicationInfo applicationInfo : applicationInfos) {
			int uid = applicationInfo.uid;
			
			long tx = TrafficStats.getUidTxBytes(uid);//上传
			
			long rx = TrafficStats.getUidRxBytes(uid);//下载
			//方法返回值为-1 代表的是应用程序没有产生流量或者操作系统不支持流量统计
			
		}
		
		TrafficStats.getMobileTxBytes();//获取手机3g/2g网络上传的总流量
		TrafficStats.getMobileTxBytes();//手机2g/3g下载的总流量
		
		
		TrafficStats.getTotalTxBytes();//获取上传的总流量
		TrafficStats.getTotalRxBytes();//获取下载的总流量
		
		
		setContentView(R.layout.activity_traffic_manager);
		
		
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值