文章陈述了手机发展趋势及耗电特性,集中讨论了时下最为关心的智能手机耗电问题,并介绍了测量手机软件耗电量的两种方法。此外还解释了为何运营商此前会提出收取微信的费用,心跳机制是什么。

美国著名手机公司Palm的CEO JonRubinstein曾经说过:“手机未来的发展取决于两个因数,一是手机的数据传输速度;二就是手机待机时长。”

为什么手机待机时长如此重要呢?

现 在,手机上网速度已经有很大的提升,而且还在马不停蹄的发展4G,5G。4G网络可以将手机的上网速度提高到100Mbps以上,简单的说,下载一首歌曲 不用1秒钟,下载一部电影不到1分钟。现在正在制定和规划的5G网络,通过手机上网的速度甚至可以达到1Gbps。所以可以想象,在数据速度不再受到限制 的情况下,“智能手机”结合各种应用软件以及“云”计算,未来的手机将成为真正的“移动终端”。手机身份证,手机银行,手机钱包、手机交通卡,手机导航, 手机智能驾驶……,所有的事情都使用这个“手机”通过网络完成。

当“手机”已经变成了你时时刻刻都离不开“终端”,手机没电是不是非常致命?

导致手机的待机时间短的原因比较复杂,包括手机待机状态功耗,通话时间,上网时间,无线信号强弱,GPS导航,显示屏亮度,各种软件后台运行,电池容量大小等都会影响待机时间。通常我们最关心的是手机从上一次充电到手机自动关机或提示电量不足的时间长短。

要全面分析和优化手机的待机时长,手机、电池、充电管理一个都不能少,暂且让我们称它们是“手机三件套”吧。那就让我们从手机的耗电特性开始!

手机发展趋势和耗电特性

智能手机越来越普及,硬件处理能力越来越强,支持的软件应用越来越多。

我们不免也有另一种担心,现在的智能手机的待机时间已经是一个短板,未来的智能手机待机时间变得更加短呢?

从 理论上来说,更大的显示屏、更多核的处理器、更多样化的无线连接技术等肯定会增加手机的耗电量。同时,手机的功能也越来越多,手机使用的频率也会越来越频 繁,因此对手机的耗电性能进行优化和管理也变得更加重要。譬如在不操作手机时更快的进入休眠,采用脉冲形式发射无线信号,非连续接收及非连续发射等。

为了优化和改善手机的耗电,就必须先了解手机耗电的特征或发现手机存在哪些耗电性能上的缺陷,做到有的放矢。

手机耗电的特征可以归纳为以下几个方面:

1.电流幅度波动大:

a) 关机漏电流:~10 to 100nA

b) 休眠电流: ~100 μA to 10mA

c) 待机电流: ~5 to 50 mA

d) 接收状态: ~100 to 300 mA (脉冲)

e) 发射状态: ~1 to 2.5 A(脉冲)

f) 应用软件运行:~100mA to 2A

2.电流变化的速度快、动态大:

上图是GPRS手机发射Tx和接收Rx的电流波形:

a) 发射TX电流脉冲为0.58 ms,电流 2.02A;

b) 接收RX 电流脉冲为1.2ms,电流143 mA

c) 连续发射Tx电流脉冲间隔为 4.6 ms;

d) 空闲Idle状态的电流为1mA。

3.电流是多种功能综合,难以区分是谁引起的电流:

上图是手机从Idle到显示屏点亮,再到拨号打电话过程的电流波形;在显示打开且手机发射的位置,电流时二者叠加的组合电流。

4.通常需要长时间的对电流进行跟踪和观察

如上图需要测试手机通话时长,要持续4个小时连续记录电流、电压的变化,分析通话过程消耗的电量(843mAh),而且还需要准确测量脉冲电流,往往变得非常困难。

应用软件在手机上的耗电

运营商为什么说提出收取微信的费用?

一般Android手机每天有超过15-20%的电量被消耗在发送过度频繁的心跳上

微信,你一定不陌生吧?网上是这样介绍微信的:

微 信是一种更快速的即时通讯工具,具有零资费、跨平台沟通、显示实时输入状态等功能,与传统的短信沟通方式相比,更灵活、智能,且节省资费。针对图片、语音 和视频优化,1M可发约1000条文字信息,1000秒语音信息,约1分钟视频信息;微信有着精心设计过的通信协议,在后台运行时仅消耗极少流量,一个月 消耗约1.7M流量。

此前,曾冒出来一条新闻说微信要开始收费。大家会好奇——为什么要收费?谁要收费?收的是什么费?下面我们来说说这个事儿。

微信是通过数据业务将文字、图片、语音或视频等内容传输出去的,因此,只要通过WIFI或者数据包月就可以实现完全的免费。因此,只要软件开发商如腾讯不收取软件费用,理论上用户就没有理由支付任何的费用。

然而,移动通信网络中由于用户众多、资源稀缺,每个用户都是动态占用资源,比如IP地址以及无线信道。为了实现即时通讯,微信软件采用向移动通讯网络周期性的发送资源分配请求,即使后台运行,也保持在线状态。这种机制也称作为“心跳机制”。

最 早的心跳机制用于服务器的安全备份机制,是为了防止服务器死机,而在服务器之间采用专用的端口和线路,周期性传送简短的信息,心跳就是形象的比喻。一旦收 不到对方的心跳信息,服务器可以接管对方的业务,避免业务的停滞。为了业务的顺畅进行,服务器发送的心跳信息可以非常频密。

这 种机制被手机上的互联网应用所借用,无论是Android的原生应用,还是QQ、微博和微信,都采用了这种心跳机制,也就是终端定时向应用服务器发送简短 的信息。诸如旧版QQ的心跳周期为30秒,新版QQ为3分钟,微信为5分钟,Google原生应用为28分钟左右。而手机每次发送心跳包,都需要移动通信 网络为用户分配资源,分配的过程体现在信令的发送和接收上。一次心跳包的发送过程,牵涉的信令多达几十条。这些网络资源分配的信令信息运营商是不能进行收 费的,就好比手机拨电话没有接通的时候,也是很多信令信息的交互而用户不用付费。

中国移动研究院院长黄晓庆在接受媒体采访时,道出了微信业务给运营商带来的压力,称微信仅为中国移动带了10%的移动数据流量,却占用其60%的信令资源。这也被外界理解为向微信收费的直接原因。

现在我们终于明白了,中国移动等运营商为什么说要收取微信的费用?收发微信的内容如图片、语音或视频等的数据流量费用,这个已经收取了(只是算在我们包月数据流量套餐里面),还要收取微信的“心跳”费用!

其实运营商也不想一想,没有这种“心跳”,哪里后面的数据流量的收费啊?

当然,微信等创新的交流软件平台,的确是影响了运营商的短信、彩信甚至通话等收入,但这是历史发展的趋势,谁也无法阻挡。

不管收不收费,这种“心跳”还意味着每天你的手机将被从待机省电状态唤醒近300次,每次相当于打一个几秒钟的电话。粗略测算,一般的Android手机每天有超过15-20%的电量被消耗在发送过度频繁的心跳上。

为了延长手机的待机时间,建议如果长时间不用的话,还是连后台运行也关闭吧。

应用软件在手机上的耗电能测量吗?

相信大家对某运营商投放的这段电视广告应该再熟悉不过了——“xxx手机已经有10万个应用程序”!与之相应的是网络上热议的话题——5G技术最高理论下载速率可10Gbps。

这两个信息提示我们“移动互联时代”时代真的要来了……

“移 动互联时代”的手机就更加有理由成为真正意义上的“移动终端”,在未来通信速度不再受限制的情况下,通过安装什么样的应用软件,手机就可以变成什么样的终 端。虽然在3G时代,通信速率还远没有达到带宽不受限制,但现在的“智能手机”走在“移动终端”蜕变的路上,已经有数以万计的应用软件可以下载安装,使手 机变成各种功能独特的“终端”。

手机之所以区别于电脑或其他通讯工具,最突出的优势就在于其移动性、便携性。而采用锂电池供电又是其移动性、便携性的基础,可以说锂电池的出现成就了手机,但锂电池的容量瓶颈已经让手机待机时间短成为一个突出问题。

其实,锂电池的容量已经出当初的数百mAh提高到了现在的数千mAh,待机时间变得越来越短,根本原因在手机的耗电比原来大了更多,包括手机更耗电的硬件——之前的博文“手机发展趋势和耗电特性”已经做过相关的介绍。

另一个突出的变化就是手机需要安装和运行更多的应该软件,有些运用软件运行时需要消耗大量的电能,如前面提到的微信,QQ,微博等。

应 用软件需要消耗电量,大家都容易理解,但究竟哪个软件耗电大,哪个耗电量小,如何定量的评估呢?估计这个问题一直困扰着很多软件开发者。相比硬件的耗电非 常的直观,如显示屏的亮度等级耗电是非常容易对比和测量。软件的耗电比较抽象和难以测试,是因为软件必须运行在手机硬件的基础上,测量到的耗电量是软件与 手机的硬件综合叠加的耗电总和。对于耗电来所我们无法认为的剔除硬件的耗电而单独测试软件的耗电。

所以,如何测试软件的耗电?我建议软件开发者可以有以下两种方法:

一、横向对比法:分两步测试,第一步测量手机硬件运行消耗的电量;第二步测试手机硬件和软件运行综合的耗电量。最后将两次的耗电进行对比,得出软件消耗的电量大小;

二、纵向对比法:同时进行两台手机,其中一台手机不运行软件,另一台手机运行软件;分别获得两台手机的耗电量,对比两台手机耗电量差异,得出软件消耗的电量大小。

这两种方法在测试上有一定的差异,很多应用软件都是需要移动网络的支持,而手机接收的网络信号时会随时间变化的。

因此、第一种方法的误差主要来源于手机在不同的基站网络下工作状态的变化。

第二种方法的差异则体现在两台手机本身硬件消耗的电量可能存在差异,所以需要尽可能使用同一型号,同一批次的手机。而且需要使用多通道的耗电测试仪表,如之前提到的安捷伦N6705B可以最多同时支持4台手机并行测试。

智能手机的耗电特征及APP耗电量测试的两种方法的更多相关文章

  1. Loadrunner--基准测试的两种方法

    2 练习基准测试方法1 2.1 问题 为登录业务设计场景. 2.2 方案 在控制台中使用循环多次的方式执行场景.(多次数) 2.3 步骤 实现此案例需要执行以下步骤: 步骤一: 1.打开控制台,如下图 ...

  2. mui 获取本地APP本版号的两种方式

    第一种 mui.plusReady(function () { mui.getJSON("manifest.json", null, function (data) { vum = ...

  3. APP耗电量测试

    现象 APP耗电,导致电池续航能力不佳,如下图,在小米MIX2和iPhone X机型上后台静默一小时各应用的耗电排行: 基本概念 相对于PC来说,移动设备的电池电量是非常有限的,保持持久的续航能力尤为 ...

  4. 【ADO.NET-中级】百万级数据的批量插入的两种方法测试

    在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量 ...

  5. Android驱动学习-APP操作新硬件的两种方法(支持添加的驱动)

    在给Android添加新的驱动后,app要如何使用呢? 正常的使用一个设备,需要getService.但是像LED等我们自己添加的硬件驱动,Android源代码根本没有我们自己添加的服务. 第一种: ...

  6. Android手机app耗电量测试工具 - Gsam Battery Monitor

    这段时间需要测试一个Android手机app的耗电量,在网上找了一个工具,Gsam Battery Monitor,觉得挺好用,和大家分享一下. 安装app后打开,可以看到主界面是这样的 点击一下上图 ...

  7. app耗电量测试工具--PowerTutor

    PowerTutor是一款用来测试手机功耗的小工具,它可以只管地展示手机系统主要的组件和各种用户app产生的功耗数据.它可以统计app的屏幕功耗(LCD).CPU功耗以及WiFi和3G网络功耗,我们可 ...

  8. Battery Historian之App耗电量测试

    一.Battery Historian测试所需环境:Go+Git+Python+Java+Battery Historian源码 下载Battery Historian源码并且运行的步骤如下: 1.打 ...

  9. app兼容性测试的几种方案

    1.统计自己的应用被使用的数据 通过友盟或Flurry等在应用嵌入,得到应用在哪些机型上被安装了,排名前十的就是测试的重点机型 2.可参考兼容性测试平台的测试结果 比如Testin或百度的MTC平台, ...

随机推荐

  1. poj 2441 Arrange the Bulls

    Arrange the Bulls Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 5427   Accepted: 2069 ...

  2. Codeforces Round #398 (Div. 2) A-E

    分数史上新低 开场5分钟过了A题,想着这次赌一把手速,先去切C吧 看完C题觉得这应该是道水题,码了十分钟提交,WA 想着这明明是道水题,估计少考虑了情况,添了几行再交,WA 不可能啊,这题都A不掉,和 ...

  3. set基本用法-----2

    #include<cstdio> #include<iostream> #include<cstdlib> #include<cmath> #inclu ...

  4. Docker(七):仓库

    登录 可以通过执行docker login命令来输入用户名和密码,密码和邮箱来完成注册和登录.注册成功之后,本地用户目录的.dockerfig中将保存用户的认证信息. 使用$sudo docker s ...

  5. 基于websocket的页面聊天程序

    注:主要的问题是当浏览器窗口直接关闭时,后台会报异常,因为后台还在继续向浏览器端写数据,但是浏览器已经关闭了,会报java.net.SocketException:peer:Socket write ...

  6. [LeetCode] Populating Next Right Pointers in Each Node 深度搜索

    Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...

  7. [LeetCode] Sudoku Solver 解数独,递归,回溯

    Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...

  8. alloc_chrdev_region申请一个动态主设备号,并申请一系列次设备号

    ret = alloc_chrdev_region(&ndev, 0, 1, "chr_dev"); //分配设备号 alloc_chrdev_region申请一个动态主设 ...

  9. C# asp.net 导出数据库二进制字段到excel

    前台的话不多说,本次只详细说下后台导出数据库中的二进制字段,上传下次有时间再说,有比较急的可以留言我 之前在网上搜了关于下载导出二进制字段的资料,发现都不是我想要的,都只是把上传的文件放到服务器然后下 ...

  10. 当前标识(IIS APPPOOL\ASP.NET v4.0)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限 解决方案

    今天搭环境的时候遇到这个问题,折腾了一阵子,最后在微软官方论坛上找到了解决方案. https://forums.asp.net/t/1566987.aspx?Current+Identity+does ...