android 利用TrafficStats类获取本应用的流量
2024-10-15 10:39:24
public void getData() {
// PackageManager 包管理类
PackageManager packageManager = BrownserActivity.this.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.indexOf("iAssistant") > -1) {
PackageUid = uid;
break;
}
}*/
// 获取当前应用的uid
PackageUid = android.os.Process.myUid(); // TrafficStats类根据应用的UID获取到流量的相关数据
long rx = TrafficStats.getUidRxBytes(PackageUid);// 总接收量
long tx = TrafficStats.getUidTxBytes(PackageUid);// 总发送量 float justLoad = 0f;
Log.i("scott", "本应用本次开机总接收量:" + rx);
Log.i("scott", "本应用本次开机总发送量:" + tx);
if (rx > 0) {
numRx = byteToM(rx);
justLoad = numRx.floatValue() - initData;
initData = numRx.floatValue();
}
if (tx > 0) {
numTx = byteToM(tx);
} // Toast.makeText(BrownserActivity.this, "总接收量:"+numRx.floatValue()+"M",
// Toast.LENGTH_SHORT).show();
Toast.makeText(BrownserActivity.this, "本次接收量:" + justLoad + "M", Toast.LENGTH_SHORT).show();
Log.i("scott", "转换为(M为单位)后的总接收量:" + numRx.floatValue());
Log.i("scott", "转换为(M为单位)后的总发送量:" + numTx.floatValue()); } /**
* 字节转换为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;
}
最新文章
- AngularJS常用指令
- centos 安装pptp
- 初识python第一天
- leetcode:Palindrome Linked List
- MySql 日期格式化函数date_format()
- AndroidStudio支持新的NDK的操作使用
- Android journey 1@关于编码风格和命名规范
- hdoj 1513 Palindrome【LCS+滚动数组】
- Android再学习-20141018-布局-进度条
- java 对map排序
- iOS播放gif图方式
- MyBatis_多查询条件问题
- Matlab绘图基础——绘制三维表面
- Roundcube Webmail信息泄露漏洞(CVE-2015-5383)
- 解决 Scrapy-Redis 空跑问题,链接跑完后自动关闭爬虫
- qemu中的内存管理
- memcached对key和value的限制 memcached的key最大长度和Value最大长度
- 退役 AFO
- 第一章 Java常用的并发类
- Shiro的认证原理(Subject#login的背后故事)