Android获得本应用本次开机后的流量
扫描二维码
随时随地手机看文章
/**
* 获得本次开机后使用的流量
*/
public void getData() {
//PackageManager 包管理类
PackageManager packageManager = context.getPackageManager();
int PackageUid = 0;
BigDecimal numRx = new BigDecimal("0");
BigDecimal numTx = new BigDecimal("0");
/**
* 循环抓紧所有应用的包名
* 和当前应用的包名进行匹配操作
* 把获取到的UID保存到一个临时变量
*/
for(ApplicationInfo info : packageManager.getInstalledApplications(0)){
int uid = info.uid;
String packageName = info.packageName;
if(packageName.equals(PACKAGENAME)){
PackageUid = uid;
}
}
//TrafficStats类根据应用的UID获取到流量的相关数据
long rx = TrafficStats.getUidRxBytes(PackageUid);//总接收量
long tx = TrafficStats.getUidTxBytes(PackageUid);//总发送量
LogManager.show(TAG, "本应用本次开机总接收量:"+rx, 1);
LogManager.show(TAG, "本应用本次开机总发送量:"+tx, 1);
if(rx>0){
numRx = byteToM(rx);
}
if(tx>0){
numTx = byteToM(tx);
}
LogManager.show(TAG, "转换为(M为单位)后的总接收量:"+numRx.floatValue(), 1);
LogManager.show(TAG, "转换为(M为单位)后的总发送量:"+numTx.floatValue(), 1);
}
/**
* 字节转换为M
*/
private BigDecimal byteToM(long value){
BigDecimal result = new BigDecimal(Long.toString(value));
result = result.divide(new BigDecimal("1024.0")).divide(new BigDecimal("1024.0"));
return result;
} 




