发明内容
本发明要解决的技术问题是提供一种获取移动终端应用耗电量的方法及装置,能够检测出移动终端应用的具体耗电量。
为解决上述技术问题,本发明的实施例提供技术方案如下:
一方面,提供一种获取移动终端应用耗电量的方法,应用于Android系统的移动终端中,所述方法包括:
获取移动终端应用的单位时间耗电量;
获取移动终端应用的运行时间;
根据所述移动终端应用单位时间耗电量和运行时间计算移动终端应用的耗电量。
进一步地,上述方案中,获取移动终端应用的单位时间耗电量包括:
在移动终端上仅安装所述移动终端应用,运行所述移动终端应用预设时间,绘制移动终端的电量消耗曲线,通过计算平均值获取移动终端应用的单位时间耗电量;或
计算与所述移动终端应用同类型的其他应用单位时间耗电量的平均值,作为所述移动终端应用的单位时间耗电量。
进一步地,上述方案中,所述获取移动终端应用的运行时间包括:
获取移动终端应用的前台运行时间t1,获取移动终端应用的后台运行时间t2;
所述根据所述移动终端应用单位时间耗电量和运行时间计算移动终端应用的耗电量包括:
通过公式m=n*t1+n*t2/k计算移动终端应用的耗电量,其中,k为换算系数,n为移动终端应用的单位时间耗电量,m为移动终端应用的耗电量。
进一步地,上述方案中,所述获取移动终端应用的前台运行时间t1包括:
每隔预设时间获取移动终端的前台应用,并将当前时刻获取的前台应用与上一次获取的前台应用进行比对,如果当前时刻获取的前台应用与上一次获取的前台应用不同,则将当前时刻对应的时间作为前一前台应用的结束时间,将当前时刻对应的时间作为当前前台应用的开始时间;
通过上述步骤获取移动终端应用作为前台应用的开始时间和结束时间,将结束时间减去开始时间得到移动终端应用的前台运行时间t1。
进一步地,上述方案中,所述获取移动终端应用的后台运行时间t2包括:
每隔预设时间获取移动终端的所有后台应用,并将当前时刻获取的后台应用与上一次获取的后台应用进行比对,如果当前时刻获取的后台应用与上一次获取的后台应用不同,则将当前时刻对应的时间作为新增后台应用的开始时间,将当前时刻对应的时间作为消失后台应用的结束时间;
通过上述步骤获取移动终端应用作为后台应用的开始时间和结束时间,将结束时间减去开始时间得到移动终端应用的后台运行时间t2。
本发明实施例还提供了一种获取移动终端应用耗电量的装置,应用于Android系统的移动终端中,所述装置包括:
第一获取模块,用于获取移动终端应用的单位时间耗电量;
第二获取模块,用于获取移动终端应用的运行时间;
计算模块,用于根据所述移动终端应用单位时间耗电量和运行时间计算移动终端应用的耗电量。
进一步地,上述方案中,所述第一获取模块具体用于在移动终端上仅安装所述移动终端应用,运行所述移动终端应用预设时间,绘制移动终端的电量消耗曲线,通过计算平均值获取移动终端应用的单位时间耗电量;或
计算与所述移动终端应用同类型的其他应用单位时间耗电量的平均值,作为所述移动终端应用的单位时间耗电量。
进一步地,上述方案中,所述第二获取模块具体用于获取移动终端应用的前台运行时间t1,获取移动终端应用的后台运行时间t2;
所述计算模块具体用于通过公式m=n*t1+n*t2/k计算移动终端应用的耗电量,其中,k为换算系数,n为移动终端应用的单位时间耗电量,m为移动终端应用的耗电量。
进一步地,上述方案中,所述第二获取模块具体用于每隔预设时间获取移动终端的前台应用,并将当前时刻获取的前台应用与上一次获取的前台应用进行比对,如果当前时刻获取的前台应用与上一次获取的前台应用不同,则将当前时刻对应的时间作为前一前台应用的结束时间,将当前时刻对应的时间作为当前前台应用的开始时间;通过上述步骤获取移动终端应用作为前台应用的开始时间和结束时间,将结束时间减去开始时间得到移动终端应用的前台运行时间t1。
进一步地,上述方案中,所述第二获取模块具体用于每隔预设时间获取移动终端的所有后台应用,并将当前时刻获取的后台应用与上一次获取的后台应用进行比对,如果当前时刻获取的后台应用与上一次获取的后台应用不同,则将当前时刻对应的时间作为新增后台应用的开始时间,将当前时刻对应的时间作为消失后台应用的结束时间;通过上述步骤获取移动终端应用作为后台应用的开始时间和结束时间,将结束时间减去开始时间得到移动终端应用的后台运行时间t2。
本发明的实施例具有以下有益效果:
上述方案中,根据获取的移动终端应用的运行时间和移动终端应用的单位时间耗电量可以计算出移动终端的具体耗电量,这样在用户需要节省耗电量时,就可以针对性地关闭某些耗电量比较多的应用,防止移动终端的电池电量消耗过快。
具体实施方式
为使本发明的实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明的实施例针对现有技术中智能手机不能检测出某款应用的耗电详情,应用的具体耗电情况只能通过专门的耗电检测设备来检测,用户尚无法获知应用的具体耗电情况,这样在用户需要节省耗电量时,就无法针对性地关闭某些耗电量比较多的应用的问题,提供一种获取移动终端应用耗电量的方法及装置,能够检测出移动终端应用的具体耗电量。
图1为本发明实施例的获取移动终端应用耗电量的方法的流程示意图,本发明实施例的获取移动终端应用耗电量的方法应用于Android系统的移动终端中(其中,Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于便携设备,如智能手机和平板电脑),如图1所示,本实施例包括:
步骤101:获取移动终端应用的单位时间耗电量;
步骤102:获取移动终端应用的运行时间;
步骤103:根据移动终端应用单位时间耗电量和运行时间计算移动终端应用的耗电量。
进一步地,本发明的另一实施例中,包括上述步骤101~103的基础上,步骤101具体包括:
在移动终端上仅安装移动终端应用,运行移动终端应用预设时间,绘制移动终端的电量消耗曲线,通过计算平均值获取移动终端应用的单位时间耗电量;或
计算与移动终端应用同类型的其他应用单位时间耗电量的平均值,作为移动终端应用的单位时间耗电量。
进一步地,本发明的另一实施例中,包括上述步骤101~103的基础上,步骤102具体包括:
获取移动终端应用的前台运行时间t1,获取移动终端应用的后台运行时间t2;
步骤103包括:
通过公式m=n*t1+n*t2/k计算移动终端应用的耗电量,其中,k为换算系数,n为移动终端应用的单位时间耗电量,m为移动终端应用的耗电量。
进一步地,获取移动终端应用的前台运行时间t1包括:
每隔预设时间获取移动终端的前台应用,并将当前时刻获取的前台应用与上一次获取的前台应用进行比对,如果当前时刻获取的前台应用与上一次获取的前台应用不同,则将当前时刻对应的时间作为前一前台应用的结束时间,将当前时刻对应的时间作为当前前台应用的开始时间;
通过上述步骤获取移动终端应用作为前台应用的开始时间和结束时间,将结束时间减去开始时间得到移动终端应用的前台运行时间t1。
进一步地,获取移动终端应用的后台运行时间t2包括:
每隔预设时间获取移动终端的所有后台应用,并将当前时刻获取的后台应用与上一次获取的后台应用进行比对,如果当前时刻获取的后台应用与上一次获取的后台应用不同,则将当前时刻对应的时间作为新增后台应用的开始时间,将当前时刻对应的时间作为消失后台应用的结束时间;
通过上述步骤获取移动终端应用作为后台应用的开始时间和结束时间,将结束时间减去开始时间得到移动终端应用的后台运行时间t2。
本发明的获取移动终端应用耗电量的方法,根据获取的移动终端应用的运行时间和移动终端应用的单位时间耗电量可以计算出移动终端的具体耗电量,这样在用户需要节省耗电量时,就可以针对性地关闭某些耗电量比较多的应用,防止移动终端的电池电量消耗过快。
图2为本发明实施例的获取移动终端应用耗电量的装置的结构框图,本发明实施例的获取移动终端应用耗电量的装置应用于Android系统的移动终端中,如图2所示,本实施例包括:
第一获取模块20,用于获取移动终端应用的单位时间耗电量;
第二获取模块21,用于获取移动终端应用的运行时间;
计算模块22,用于根据移动终端应用单位时间耗电量和运行时间计算移动终端应用的耗电量。
进一步地,上述方案中,第一获取模块20具体用于在移动终端上仅安装移动终端应用,运行移动终端应用预设时间,绘制移动终端的电量消耗曲线,通过计算平均值获取移动终端应用的单位时间耗电量;或
计算与移动终端应用同类型的其他应用单位时间耗电量的平均值,作为移动终端应用的单位时间耗电量。
进一步地,上述方案中,第二获取模块21具体用于获取移动终端应用的前台运行时间t1,获取移动终端应用的后台运行时间t2;
计算模块22具体用于通过公式m=n*t1+n*t2/k计算移动终端应用的耗电量,其中,k为换算系数,n为移动终端应用的单位时间耗电量,m为移动终端应用的耗电量。
进一步地,上述方案中,第二获取模块21具体用于每隔预设时间获取移动终端的前台应用,并将当前时刻获取的前台应用与上一次获取的前台应用进行比对,如果当前时刻获取的前台应用与上一次获取的前台应用不同,则将当前时刻对应的时间作为前一前台应用的结束时间,将当前时刻对应的时间作为当前前台应用的开始时间;通过上述步骤获取移动终端应用作为前台应用的开始时间和结束时间,将结束时间减去开始时间得到移动终端应用的前台运行时间t1。
进一步地,上述方案中,第二获取模块21具体用于每隔预设时间获取移动终端的所有后台应用,并将当前时刻获取的后台应用与上一次获取的后台应用进行比对,如果当前时刻获取的后台应用与上一次获取的后台应用不同,则将当前时刻对应的时间作为新增后台应用的开始时间,将当前时刻对应的时间作为消失后台应用的结束时间;通过上述步骤获取移动终端应用作为后台应用的开始时间和结束时间,将结束时间减去开始时间得到移动终端应用的后台运行时间t2。
本发明的获取移动终端应用耗电量的装置,根据获取的移动终端应用的运行时间和移动终端应用的单位时间耗电量可以计算出移动终端的具体耗电量,这样在用户需要节省耗电量时,就可以针对性地关闭某些耗电量比较多的应用,防止移动终端的电池电量消耗过快。
下面结合图3-图4以及具体的实施例对本发明的获取移动终端应用耗电量的方法进行详细介绍:
首先可以通过专业的耗电检测设备取得移动终端应用的耗电数据,测试方法为,在移动终端上仅安装待测试应用,移动终端上没有安装其他应用,运行该应用预设时间(比如可以为400秒),每秒记录一次移动终端的实时耗电量(单位毫安),绘制如图3所示的电量消耗曲线,通过计算平均值获取该应用的单位时间耗电量。测试完毕后,将移动终端应用的耗电数据存储到数据库中。
另外对于某些未知应用,还可以通过已知的耗电数据来推断该应用的单位时间耗电量。如该应用为3D游戏,则分析已有3D游戏的单位时间耗电量,计算已有3D游戏单位时间耗电量的平均值作为该应用的单位时间耗电量。通过此种方式可以扩充应用耗电量数据。如果无法检测该应用类型,则获取全部应用的单位时间耗电量,并取平均值作为该应用的单位时间耗电量。
之后检测移动终端应用的运行时间,该运行时间包括移动终端应用的前台运行时间和后台运行时间。
在检测移动终端的前台运行时间时,需要单独创建一个进程,该进程每过预设时间(比如1-15s)会通过移动终端的API(Application Programming Interface,应用程序编程接口)获取当前的Activity堆栈,并获取堆栈栈顶的应用(前台应用)。获取以后会跟之前获取的前台应用对比,如果当前时刻获取前台应用与上一次获取的前台应用不同,则将当前时刻对应的时间作为前一前台应用的结束时间,同时作为之后前台应用的开始时间,以此得到移动终端的前台运行时间t1。如图4所示,每隔1s获取一次前台应用,应用A从0s时开始作为前台应用运行,到第3s的时候前台应用变为B,则认为A的前台运行时间为3s;第4s的时候,前台应用变为C,则B的前台运行时间为1s。
当移动终端应用在后台运行的时候,其耗电量非常低,通过实验可以得到移动终端应用前台耗电量与后台耗电量的换算系数k,约为10-30。与前台应用类似,每隔预设时间(比如10s-50s)获取一次移动终端当前所有的后台应用,通过遍历的方式计算某个应用在什么时间开始,什么时间结束,得到移动终端应用的后台运行时间t2。
之后通过公式m=n*t1+n*t2/k计算移动终端应用的耗电量,其中,k为换算系数,n为移动终端应用的单位时间耗电量,m为移动终端应用的耗电量。
在一具体实施例中,移动终端应用的耗电量的计算过程如下:
某移动终端中共有A、B、C、D四款应用正在运行。通过连续运行应用获取平均耗电量的方法得知,在400s的运行时间中,A的平均单位时间耗电量为369.4毫安、B的平均单位时间耗电量为438毫安,C的平均单位时间耗电量为286.5毫安,D的平均单位时间耗电量为314毫安。四款应用的换算系数k都为20。
某一时刻,通过方法:
List<RunningTaskInfo>runRasks=activityMgr
.getRunningTasks(1);
RunningTaskInfo taskInfo=runRasks.get(0);
得到,该时刻前台正在运行的应用为A。
通过方法:
List<RunningAppProcessInfo>
android.app.ActivityManager.getRunningAppProcesses()
得到,该时刻所有运行的后台应用的集合为{A、B、C、D}。
后续通过定时(如每隔10s)重复获取前台应用和后台应用,得到N个时刻,每个时刻当前的前台应用和后台应用如下表所示:
时间 |
前台应用 |
后台应用 |
10s |
A |
A、B、C、D |
20s |
A |
A、B、C、D |
30s |
A |
A、B、C |
40s |
A |
A、B、C |
50s |
A |
A、B、C |
60s |
B |
A、B、C |
70s |
C |
B、C |
80s |
C |
B、C |
90s |
C |
A、B、C |
100s |
C |
A、C |
在60s的时候,移动终端的前台应用为B,与50s时的前台应用对比,发现已经不一致。则认为A的前台运行时间为60s,B在60s时开始运行。通过公式:前台耗电量=前台运行时间*单位时间耗电量,计算出A的前台耗电量为60/3600*369.4=6.16毫安时。
60s的时候,A并没有被关闭,而是转入后台运行。60s和70s的后台应用集合分别为{A、B、C}和{B、C},通过对两个集合分别遍历并对比,发现70s的时候应用A被彻底关闭,所以A在后台共运行了10s。通过公式:后台应用耗电量=后台运行时间*单位时间耗电量/换算系数,计算出A的后台耗电量为10/3600*369.4/20=0.308毫安时。则A本次运行共消耗的耗电量为6.16+0.308=6.468毫安时。
通过本发明的技术方案可以得到移动终端应用的具体耗电量,进而可以将移动终端应用的耗电量显示给用户,让用户对自己移动终端中的应用耗电量了如指掌。并且本发明的技术方案可以区分前台应用和后台应用,并分别计算耗电量,不仅可以显示某个应用的耗电详情,还可以使用户获知电量消耗在哪里,是否有后台隐藏的应用消耗电量,从而能够在用户需要节省耗电量时,针对性地关闭某些耗电量比较多的应用,减少电量消耗,延长移动终端的使用时间。
此说明书中所描述的许多功能部件都被称为模块,以便更加特别地强调其实现方式的独立性。
本发明实施例中,模块可以用软件实现,以便由各种类型的处理器执行。举例来说,一个标识的可执行代码模块可以包括计算机指令的一个或多个物理或者逻辑块,举例来说,其可以被构建为对象、过程或函数。尽管如此,所标识模块的可执行代码无需物理地位于一起,而是可以包括存储在不同物理上的不同的指令,当这些指令逻辑上结合在一起时,其构成模块并且实现该模块的规定目的。
实际上,可执行代码模块可以是单条指令或者是许多条指令,并且甚至可以分布在多个不同的代码段上,分布在不同程序当中,以及跨越多个存储器设备分布。同样地,操作数据可以在模块内被识别,并且可以依照任何适当的形式实现并且被组织在任何适当类型的数据结构内。所述操作数据可以作为单个数据集被收集,或者可以分布在不同位置上(包括在不同存储设备上),并且至少部分地可以仅作为电子信号存在于系统或网络上。
在模块可以利用软件实现时,考虑到现有硬件工艺的水平,所以可以以软件实现的模块,在不考虑成本的情况下,本领域技术人员都可以搭建对应的硬件电路来实现对应的功能,所述硬件电路包括常规的超大规模集成(VLSI)电路或者门阵列以及诸如逻辑芯片、晶体管之类的现有半导体或者是其它分立的元件。模块还可以用可编程硬件设备,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等实现。
在本发明各方法实施例中,所述各步骤的序号并不能用于限定各步骤的先后顺序,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,对各步骤的先后变化也在本发明的保护范围之内。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。