用Charles工具做弱网的测试,或者模拟2G、3G的网络情况。
通过抓包是流量测试直接的方法。在App运行器件,把手机收发的所有报文抓取下来,在计算收发报文总大小,即app消耗的流量。如果我们需要测试某个app消耗 的流量需要禁用其他app的连网权限。
1)限制其他app的连网权限,因为有些app的进程是常驻后台的,即使不运行,也会有网络报文。可以借助一些手机管家软件禁用网络。
2)手机上抓包,下载tcpdump,手机链接电脑,获得root权限
3)将tcpdump(forAndroid)上传至android手机上,在命令提示符窗口中输入命令:adbpush <LocalPath of tcpdump> /data/local/tcpdump
4)给tcpdump增加可执行权限
adb shell
su
chmod 6755 /data/local/tcpdump
5)启动抓包,使用命令/data/local/tcpdump-v -i any -s 0 -w /sdcard/zhangyupcap
Got后面的数字表示当前抓到的包的数量。如果有变化,表示有网络流量
6)导出抓包结果adb pull /sdcard/zhangyupcap <LocalPathof PcapFile >
7)用Wireshark打开刚才的抓包结果,点击StatisticsàSummary,流量的数值为Bytes一行的Displayed一栏。
可以使用腾讯手机管家的电池管家维护管理电池功能
腾讯电池管家会智能降低CPU频率,保持最低的电量消耗;
平常使用时,腾讯电池管家会保持稳定的CPU频率,
在不影响体验前提下保持最佳的省电状态;当在玩游戏时,
电池管家会发挥CPU的强劲性能,提高玩游戏的乐趣。
系统电量变化,最终调用如下函数:
sendIntentLocked
电池电量参数
android 电池(一):锂电池基本原理篇
android低电量处理流程
android 44 电池电量显示分析(低电量提醒与电池图标)Java 层
运用这些ADB命令可以很直观的查看到你手机上的硬件与软件方面的详细信息。可查看手机系统的具体命令如下:getprop 查看机器的全部信息参数
getprop roserialno 查看机器的SN号
getprop rocarrier 查看机器的CID号
getprop rohardware 查看机器板子代号
首先在你的电脑键盘上同时按下 WIN+R ,这时候会d出一个 运行 窗口。
接着在框中输入 CMD ,并按下 确定 。这时候就会d出一个命令窗了!
上面所提供的ADB命令也就是在这个窗口下所运行的!先输入 adb shell ,按下回车。然后就可以开始输入上面所提供的命令了!getprop roserialno:查看机器的SN号getprop rocarrier:查看机器的CID号android女用的是传说中三星的M100S,而这里作为示例的是T-Mobile版的G1,所以在这显示的是TMUS。getprop rohardware:查看机器板子代号可以看到G1的开发代号叫作trout!getprop robootloader:查看SPL(Hboot)版本号getprop:查看机器的全部信息参数在这能看到你机器的全部的信息参数,从你的硬件信息到所刷的ROM版本信息。
1 打开终端,进入上述目录,如下图所示:
2 输入adb shell,打开adb命令行,如下图所示:
3 查看cpu使用情况:
输入命令:top -m 10 -s cpu(-m显示最大数量,-s 按指定行排序),如下图所示:
参数含义:
PID : progress identification,应用程序ID
S : 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
#THR : 程序当前所用的线程数
VSS : Virtual Set Size虚拟耗用内存(包含共享库占用的内存)
RSS : Resident Set Size实际使用物理内存(包含共享库占用的内存)
PCY : 前台(fg)和后台(bg)进程
UID : User Identification,用户身份ID
Name : 应用程序名称
注意第一列的pid,使用pid值可以查看当前程序的内存使用情况。
4 查看指定程序内存使用情况:
输入命令: dumpsys meminfo 3253,如下图所示:
参数含义:
dalvik : dalvik使用的内存
native : native堆上的内存,指C\C++堆的内存(android 30以后bitmap就是放在这儿)
other : 除了dalvik和native的内存,包含C\C++非堆内存······
Pss : 该内存指将共享内存按比例分配到使用了共享内存的进程
allocated : 已使用的内存
free : 空闲的内存
private dirty : 非共享,又不能被换页出去的内存(比如linux系统中为了提高分配内存速度而缓冲的小对象,即使你的进程已经退出,该内存也不会被释放)
share dirty : 共享,但有不能被换页出去的内存
5 使用ctrl + c,退出adb命令行。
我的Android版本是51。
我是这样去实现的:
首先-----》我在priv-app/Settings里面的battery里面加一条SwitchPreference,这个是是否显示的开关。
通过这个开关将值写入数据库中。然后SystemUI就可以取到这个值控制是否显示
这个battery控制界面是PowerUsageSummary,它是一个PreferenceFragment。
它的界面的绘制是通过好几种途径,最后都通过addPreference加到一个PreferenceGroup里面了。
然后-----》我需要改frameworks层的东西,
1>在androidproviderSettings类的System下面加一个String类型的名字,
System对应的是数据库的名字
例如BATTERY_POWER_PERCENTAGE
2>要修改SettingsProvider这个应用,它是Settings的数据库管理应用,
主要提供了一系列 *** 作数据库的方法,先在defaultsxml里面添加一个integer变量,
给他一个初始值0,0对应不显示,1对应显示。然后找打DatabaseHelper这个类,
它是一个SQLiteOpenHelper,它封装了一系列 *** 作sqlite数据库的方法,
我们在loadSystemSettings方法里面可以将直接在defaultsxml定义的值写入数据库。
3>我们要修改SystemUI这个应用,看过源码才知道,其实状态栏是分3个显示的,
锁屏的时候是一个,对应的类是KeyguardStatusBarView,它是一个RelativeLayout,
对应的布局是Keyguard_status_barxml
进入后是一个,对应的类是PhoneStatusBar,它是BaseStatusBar的子类
对应的布局是status_barxmlxml
下拉通知菜单的时候又是一个,对应的类是StatusBarHeaderView,它是一个RelativeLayout
它对应的布局是Status_bar_expanded_headerxml
要想监听到电量的变化,必须实现BatteryControllerBatteryStateChangeCallback这个接口,
它有两个方法,其中onBatteryLevelChanged方法就是监听电量变化的
BatteryController是一个BroadcastReceiver,当电量变化时可以收到
PowerManagerACTION_POWER_SAVE_MODE_CHANGED这个action,
这时就会走onBatteryLevelChanged方法,所有我们只要实现这个接口就可以监听到。
KeyguardStatusBarView和StatusBarHeaderView是有实现的,所以在这里我将
PhoneStatusBar也实现了这个接口。当然这不是控制电量百分比是否显示,
在设置里面我们已经加了一个控制开关,它会将值写入数据库,我们在PhoneStatusBar
类中只需要写一个ContentObserver来监听改变来控制,其实这个百分比是一个textview,
PhoneStatusBar对应的布局是status_barxml,在里面加一个textview在自定义电池图标的下面,
在代码中只需要用setVisibility方法就可以控制。
KeyguardStatusBarView也是一样这样实现。
好了说了这么多,其实要编译和push的有4个东西,frameworksjar Settingapk
SettingsProviderapk SystemUIapk
以上就是关于Android 中流量,电量,弱网环境怎么测全部的内容,包括:Android 中流量,电量,弱网环境怎么测、Android 如何获取所有应用的耗电量排行、Android电量计重要的类及函数介绍等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)