我想知道应用程序在通过adb / adb shell运行2.3的Android手机上发送和接收的数据量
我找到的最接近的线程就是这个
Tracking an application's network statistics (netstats) using ADB
但它对我不起作用。
理想情况下,我希望查看给定应用程序的网络统计信息,并了解如何根据需要擦除/重置这些统计信息。
有什么想法吗?
答案 0 :(得分:1)
如果使用adb / adb shell不是必要条件,您可以使用trafficStats课程计算设备中安装的不同应用的互联网使用情况
final PackageManager pm = getPackageManager();
// get a list of installed apps.
List<ApplicationInfo> packages = pm
.getInstalledApplications(PackageManager.GET_META_DATA);
// loop through the list of installed packages and see if the selected
// app is in the list
for (ApplicationInfo packageInfo : packages) {
// get the UID for the selected app
UID = packageInfo.uid;
//internet usage for particular app(sent and received)
long recived = TrafficStats.getUidRxBytes(UID);
long send = TrafficStats.getUidTxBytes(UID);
}
仅适用于您的应用的互联网使用情况:
receivedMbs = (double) TrafficStats.getUidRxBytes(android.os.Process
.myUid()) / (1024 * 1024);
sentMbs = (double) TrafficStats.getUidTxBytes(android.os.Process
.myUid()) / (1024 * 1024);
相关链接:
TrafficStats Api android and calculation of daily data usage
希望它有所帮助。
答案 1 :(得分:0)
echo $(($(adb shell ifconfig rmnet_mhi0|grep "RX bytes"|cut -d ":" -f 2|cut -d " " -f 1)/1024)) Mb
但这是自上次重新启动或上次连接以来。
或:https://gist.github.com/Zibri/387f0bd0acf09f71384ce78dd45aa058
#!/bin/bash
# Get android network usage statistics from phone.
# by Zibri
function getUsage ()
{
rb=0;
tb=0;
for a in $(adb shell dumpsys netstats|grep "rb="|cut -d "=" -f 3|cut -d " " -f 1);
do
rb=$((rb+a/1024));
done;
rb=$((rb/2));
for a in $(adb shell dumpsys netstats|grep "rb="|cut -d "=" -f 5|cut -d " " -f 1);
do
tb=$((tb+a/1024));
done;
tb=$((tb/2));
echo RX: $rb Kb TX: $tb Kb
echo Total: $(((rb+tb)/1024)) Mb
};
getUsage
为您提供与设置/数据使用菜单中相同的号码。
(就我而言,这就是我所需要的。)