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消息提示框引起亮屏,减少快速移动中的经纬度采集频率。


目录
相关文章
|
9月前
|
存储 算法 异构计算
基于FPGA的图像直方图统计实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像直方图统计实现,包括tb测试文件和MATLAB辅助验证
|
数据采集
如何使用振弦采集读数模块?
振弦采集读数模块主要用于测量振弦的振幅、频率和周期等参数。以下是使用振弦采集读数模块的基本步骤:
如何使用振弦采集读数模块?
|
传感器 存储
VM系列振弦采集模块的信号检测与分析计算
振弦传感器钢弦起振后,信号强度在短时间内迅速达到最大,然后在钢弦张力及空气阻力作用下逐渐恢复静止。我们可将整个振动过程分为起振、调整、稳定、消失几个阶段,上述几个阶段中,起振和调整阶段的振动又叫做强迫振动,稳定与消失阶段合称为自主振动。
306 66
VM系列振弦采集模块的信号检测与分析计算
|
传感器 数据采集 算法
优化振弦采集读数模块开发的步骤
最后,需要进行严格的测试和验证,以确保开发出来的振弦读数模块能够正常工作,并具有高可靠性和稳定性。
优化振弦采集读数模块开发的步骤
|
传感器 移动开发
振弦采集模块的频率值与温度值的修正
注意: VM 模块不进行频率、温度修正时,即可以保证频率 0.1Hz、温度 0.5℃ 的绝对精度,多项式修正仅用于微小的调整使用。当出现测量值与预期值相差较大的情况时,应排查造成误差的原因,不应该直接用参数进行修正。 注意:温度修正仅适用于 NTC 热敏电阻类型的温度传感器。
振弦采集模块的频率值与温度值的修正
|
传感器 算法 安全
振弦采集读数模块应用仪器开发的注意事项
1. 确认振弦类型:应根据实际应用需要选择合适的振弦类型,包括弦材质、长度、直径、拉力等。
|
存储 传感器
多功能手持VH501TC混合信号采集仪如何处理监测数据
在实时数据显示窗口, 长按【存储】按键即可保存当前显示的传感数据,当听到蜂鸣器提示后表示存储完成,同时屏幕底部的已保存数量值自动加 1。
多功能手持VH501TC混合信号采集仪如何处理监测数据
|
传感器
振弦采集模块读取传感器频率值的问题
振弦传感器中钢弦的振动频率与钢弦的振动幅度有关,振动幅度越大时频率越高(可能会偏差1~2Hz),所以在传感器使用过程中,应使用相同的激励方法、激励电压才能保证不同时间测读数据的可比性。
振弦采集模块读取传感器频率值的问题
|
传感器 数据处理
VM系列振弦采集读取模块激励方法
什么是振弦传感器采集读数模块:指针对振弦传感器的特性而设计的传感器激励、读数模块。具有集成度高、功能模块化、数字接口的一系列特性,能完成振弦 传感器的激励、信号检测、数据处理、质量评估等专用针对性功能,进行传感器频率和温度物理量模数转换,进而通过数字接口实现数据交互。振弦传感器读数模块是振弦传感器与数字化、信息化之间的核心转换单元。
VM系列振弦采集读取模块激励方法
|
前端开发 数据可视化 关系型数据库
巧用 “ 火焰图 ” 快速分析链路性能
巧用 “ 火焰图 ” 快速分析链路性能
372 0
巧用 “ 火焰图 ” 快速分析链路性能