GT的使用及耗电量统计的原理,对GT采集的电池数据采用VBA分析

简介: GT的使用及耗电量统计的原理,对GT采集的电池数据采用VBA分析

注意:我测试时的ios操作系统是8.1,现在ios9.0及以后的耗电量比老的系统少了一个量级,官方说减少20%,我的手机在熄屏的耗电量减少了30%以上,亮屏幕减少不太多。

具体编译宏文件和GT采集的部分数据文件下载地址是:http://download.csdn.net/detail/jia12216/8787079

腾讯的GT耗电量统计是通过电池状态监听通知事件和记录两次的时间差来计算耗电速度的,所以它统计的是整个手机的耗电量。

腾讯的GT参考文章及下载地址:http://gt.tencent.com

IOS中电池变化的监听参考文章:http://my.oschina.net/u/936286/blog/132943 因此你可以不依赖于GT自己用代码实现耗电量统计。

下载GT库,把GT库导入工程。

图片一

添加libstdc++.6.0.9.dylib库(不添加该库编译不通过)。

图片二

在AppDelegate.m或AppDelegate.mm文件的

- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions函数中增加代码:

ifdef DEBUG

GT_DEBUG_INIT;
// GT Usage(合入) 设置 GT logo 不旋转及支持方向
GT_DEBUG_SET_AUTOROTATE(NO);
GT_DEBUG_SET_SUPPORT_ORIENTATIONS(UIInterfaceOrientationMaskPortrait);

endif

这样就把GT集成到你的应用中了,通过xcode把应用装到调试手机上并运行应用,点小企鹅图标就可以打开GT了。点那个红色开始采集数据按钮,按钮变成可以暂停状态就开始采集数据了。当需要保持数据时点暂停按钮,然后点保存按钮弹出文件保存提示框,输入文件名并点保存就把采集的数据保存到应用下面的GT目录下。电池的数据就保存在GT/Para/GW_*/Battery_*.csv文件里。

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。 CSV文件格式的通用标准并不存在,但是在RFC 4180中有基础性的描述。使用的字符编码同样没有被指定,但是7-bitASCII是最基本的通用编码。


用Excel直接打开电池的数据文件(若用Excel导入电池的数据csv文件得到的分列显示属性的EXCEL文件),文件的第17显示的记录各个域名,前面三个逗号是为了把前面15行内容显示在左边,具体记录数据显示在右侧(就是空列)。,,,time,current(mA),CostCapacity(mAh)

time是收到电量变化通知并记录数据的时间,current(mA)表示统计间隔周期的平均电流,CostCapacity(mAh)表示从开始统计到当前时刻总共消耗的电量。

从18就是统计的电池电量变化的具体数据了。格式是:,,,14:01:54.170,1145.0,16

用Excel文件,另存为新的启动宏的工作薄-handleover.xlsm

图片三

录制编译宏

图片四

图片五

粘贴代码并保存文件

图片六

Sub handleover()
Dim i, j, n As Long
Dim k As Double
Dim str1 As String
For i = 18 To 1000
If “” = Cells(i, 1) Then
n = i - 1
Exit For
End If
Next
If n < 18 Then
Exit Sub
End If
For i = 18 To n
str1 = Trim(Cells(i, 1).Value)
If Len(str1) < 8 Then
Exit Sub
End If
If “,,,” <> Left(str1, 3) Then
Exit Sub
End If
str1 = Right(str1, Len(str1) - 3)
j = InStr(str1, “,”)
Cells(i, 5) = Left(str1, j - 1)
str1 = StrReverse(Right(str1, Len(str1) - j))
j = InStr(str1, “,”)
Cells(i, 6) = StrReverse(Right(str1, Len(str1) - j))
Cells(i, 7) = StrReverse(Left(str1, j - 1))
Next
Columns(5).NumberFormatLocal = “hh:mm:ss”
Columns(5).ColumnWidth = 20
Columns(6).ColumnWidth = 20
Columns(7).ColumnWidth = 20
Columns(8).ColumnWidth = 20
Columns(9).ColumnWidth = 20
Columns(10).ColumnWidth = 20
Columns(11).ColumnWidth = 20
Cells(1, 5) = “记录时间”
Cells(1, 6) = “统计间隔周期的平均电流(mA)”
Cells(1, 7) = “从开始统计到当前时刻总共消耗的电量(mAh)”
Cells(1, 8) = “两次记录时间间消耗的电量(mAh)”
Cells(1, 9) = “两次记录时间(m)”
Cells(1, 10) = “两次记录时间(s)”
Cells(1, 11) = “平均耗电量(s/mAh)”
For i = 19 To n
If n <= 18 Then
Exit Sub
End If
k = Cells(i - 1, 7).Value
Cells(i, 8) = Cells(i, 7).Value - k
Cells(i, 9) = DateDiff(“n”, Cells(i - 1, 5).Value, Cells(i, 5).Value)
Cells(i, 10) = DateDiff(“s”, Cells(i - 1, 5).Value, Cells(i, 5).Value)
k = Cells(i, 8).Value
Cells(i, 11) = Cells(i, 10).Value / k
Next
End Sub

当然若是已经有编译宏文件并打开文件,就可以先按照图片四点击宏直接启动宏运行就可以了。

图片七

图片八

对电池的数据统计结果如下:

记录时间 统计间隔周期的平均电流(mA) 从开始统计到当前时刻总共消耗的电量(mAh) 两次记录时间间消耗的电量(mAh) 两次记录时间(m) 两次记录时间(s) 平均耗电量(s/mAh)

集成GT的最鲜到配送员app,在不同场景下用GT采集的电量数据分析结果:

场景一:打开应用停留在主页面不锁屏不操作,平均耗电量5.221505376 minutes/16mAh(1%),平均采集间隔5.258064516秒分钟

场景二:打开应用不断刷新主页面切换页面,平均耗电量2.80378787878 minutes/16mAh(1%),平均采集间隔3分钟

场景三:打开应用,锁屏坐公交车,平均耗电量9.854166666 minutes/16mAh(1%),平均采集间隔10分钟

场景四:打开应用不断在非地图页面和地图页面切换,平均耗电量2.737037037 minutes/16mAh(1%),平均采集间隔2.666666667分钟

场景五:打开应用不断在非地图页面和地图页面切换造成地图重新加载的耗电的量大增的数据,平均耗电量2.4 minutes/16mAh(1%),平均采集间隔2.333333333分钟

场景六:打开应用锁屏长期不移动不操作,平均耗电量152 minutes/16mAh(1%)


gt数据总结:

若开启应用亮屏以5.22分钟/1%电量为基准。

锁屏耗电速度为亮屏的3.43%,和服务间的消息交互(包括频繁刷新页面)耗电速度为亮屏的186.43%,频繁使用百度地图耗电速度为亮屏的190.51%,开启应用锁屏坐公交车耗电速度为亮屏时的53.00%,开启应在切换页面时引起百度地图重新加载的耗电速度为亮屏的217.50%。

可以看到想减少app的耗电量首先要减少的是向服务器发送请求的频率。其次尽量减少百度地图的重新加载,减少push消息提示框引起亮屏,减少快速移动中的经纬度采集频率。


目录
相关文章
|
7月前
|
算法 定位技术
GPS信号的数字接收处理matlab仿真,包括频率点搜索,捕获跟踪,相关峰检测等步骤
GPS信号的数字接收处理matlab仿真,包括频率点搜索,捕获跟踪,相关峰检测等步骤
|
数据采集
如何使用振弦采集读数模块?
振弦采集读数模块主要用于测量振弦的振幅、频率和周期等参数。以下是使用振弦采集读数模块的基本步骤:
如何使用振弦采集读数模块?
|
传感器 存储
VM系列振弦采集模块的信号检测与分析计算
振弦传感器钢弦起振后,信号强度在短时间内迅速达到最大,然后在钢弦张力及空气阻力作用下逐渐恢复静止。我们可将整个振动过程分为起振、调整、稳定、消失几个阶段,上述几个阶段中,起振和调整阶段的振动又叫做强迫振动,稳定与消失阶段合称为自主振动。
298 66
VM系列振弦采集模块的信号检测与分析计算
|
传感器 数据处理
振弦采集读数测量模块的一些基本概念
振弦采集模块和振弦读数模块都可以称为振弦测量模块,它们的作用是用来测量物体的振动状态和频率。 振弦采集模块一般包括振动传感器、数据采集器和信号处理器,通过振动传感器采集物体振动信号,然后经过数据采集器进行采集并通过信号处理器进行处理,最终得出物体的振动状态和频率。 振弦读数模块也是采用相似的原理,通过振动传感器采集物体振动信号,然后通过信号处理器对信号进行处理和分析,最终得出物体的振动状态和频率,并将结果以数字形式输出。
振弦采集读数测量模块的一些基本概念
工程监测多通道振弦模拟信号采集仪VTN常规操作
1、开机 VTN4XX 有四个开机途径,手动开机、自动定时开机和上电开机、信号触发开机。 上电开机:当“工作模式拨码开关” 第 4 位为 ON 时,直接连接外部电源即可开机。 自动开机:设备根据预设的时间间隔自动开机。 手动开机:在关机状态,按【SWITCH】按键并保持 3 秒, 数码管显示 (416S 1.0.2),当听到蜂鸣器提示音后松开按键。 前 5 位表示设备型号(详见“产品选型”说明),后 3 位表示固件版本号。
工程监测多通道振弦模拟信号采集仪VTN常规操作
|
传感器 监控 芯片
LabVIEW控制Arduino采集LM35温度传感器数值(基础篇—12)
LM35 是由National Semiconductor 所生产的温度传感器,其输出电压为摄氏温度。LM35是模拟输出的温度监控芯片,其输出电压和摄氏温度成线性比列关系,是一种得到广泛使用的温度传感器。
|
传感器 算法 安全
振弦采集读数模块应用仪器开发的注意事项
1. 确认振弦类型:应根据实际应用需要选择合适的振弦类型,包括弦材质、长度、直径、拉力等。
|
传感器 移动开发
振弦采集模块的频率值与温度值的修正
注意: VM 模块不进行频率、温度修正时,即可以保证频率 0.1Hz、温度 0.5℃ 的绝对精度,多项式修正仅用于微小的调整使用。当出现测量值与预期值相差较大的情况时,应排查造成误差的原因,不应该直接用参数进行修正。 注意:温度修正仅适用于 NTC 热敏电阻类型的温度传感器。
振弦采集模块的频率值与温度值的修正
|
传感器
VM系列振弦采集模块信号检测与采样
VMXXX 内部有振弦传感器的信号检测、 有效性检测机制, 仅信号幅值位于预设的合理区间时,才会进行数据采样, 当完成足够数量的样本采样后立即进行信号质量分析计算,得到频率、频模值及多个信号质量表征值更新于对应的只读寄存器内,读取这些寄存器值,即可得到当前测量结果数据和信号质量。
VM系列振弦采集模块信号检测与采样
|
传感器
振弦采集模块读取传感器频率值的问题
振弦传感器中钢弦的振动频率与钢弦的振动幅度有关,振动幅度越大时频率越高(可能会偏差1~2Hz),所以在传感器使用过程中,应使用相同的激励方法、激励电压才能保证不同时间测读数据的可比性。
振弦采集模块读取传感器频率值的问题