最近在做android手机电池管理相关的项目,其中有一个需求是计算手机充电时间的。翻阅了一些资料和一些相关的竞品,发现每个产品的在手机充电时长的计算上多不是很统一,后来翻阅了物理学的一些知识和文章,总算给出了一个相对比较准确的答案,现在把结论共享给大家。

首先先解释几个概念:

1.电流以及电流的单位

电流被定义为电离子的定向移动,我们称之为电流,其单位为毫安或者安培(MA/A), 1安培=1000毫安

2.充入电流

充入电流指,当前利用某种充电方式充入到手机每小时的横向电流。

3.AC充电与USB充电

我们称AC充电为直流充电,也就是通常插着充电器充电,USB充电就是将手机通过USB数据线接入PC端的充电方式。通常我们默认为USB的充入电流为AC的充入电流的二分之一,AC = USB * 2,一般情况下,PC端的USB充入电流为500MA/H,AC的充入电流为1A/H,但是由于硬件的制造商规格略有不同,数据上会存在差异。

4.电池容量

查看电池容量的方式很简单,数据就在电池的背面,一目了然。

ok,有了以上4个结论,我们可以大概计算出一块电池从没有电,到满电的充电时长了。

设,一块电池的容量为X毫安,充入电流为Y毫安/小时,那么就有结论 H = X/Y,举例:一块1500MA容量的电池,用USB充电需要1500/500 = 3小时,用充电器充电需要1500/1000 = 1.5小时。请注意,充电电流系数可能会有所差异,但是差异不会很大,那么也就是是说得出的充电时间也不会差得太多。

那么这个时候有个问题出现了,我们在开发的时候发现,android的API没有给开发人员提供获取电池容量的API,其实这个也不奇怪,因为,你很可能买了个HTC的手机之后又换上了一个山寨的1800MA大电池,也就是说硬件是不提供获取电池容量的芯片的,那么android的sdk也自然无法获得这个数值。那既然上面的公式是不是对开发来说就没有任何价值了呢?

其实,还是有价值的,我换了一个思路来计算,从产品和技术两个角度去解决这个问题。

首先你必须第一时间计算出充电时间后呈现给用户,因为这是用户所期待的核心价值,不可违背。我调查了一下市面上的电池容量,差不多一般都在1200-1800MA,1800MA的电池应该说是大屏幕用的电池了,所以我取了一个平均值1500MA,当用户首次使用电池管理软件的时候,我统一使用1500MA作为计算标准,计算出充电时间,由于电池容量很可能会不符合当前手机的电池容量,所以时间上会或多或少有所偏差,但是这个没关系,我首先解决的问题是解决用户的期待感!接着,充电开始了,我会记录充电1%电量所花去的时间,然后就可以计算出来充电100%所花去的时间,根据充入电流系数X,就可以大概的得到这块电池的容量了!之后保存这快电池容量的数值,当用户下次充电的时候就可以直接获取这个数值进行时间的计算了。

结论与公式:

1.锂电池充电时间计算公式:x(电池容量) y(充入电流系数) h(充电时间)

h = x/y

2.android开发中获取电池充电时间的基本思路:

a.获取充1%电量所花费的时间h(电量百分比这个可以通过api获得),计算出冲100%所花费的时间H, H 约等于 h * 100

b.如果是USB充电,那么电池容量约等于 500 * H,如果是AC充电,那么电池容量约等于 1000 * H ,注意单位都为毫安,我们将这个结论定义为A

c.那么下次再充电的时候,我们可以通过b的结论应用公式1,就有结论:

ACTime(小时) = A/1000

USBTime(小时) = A/500

PS:1000和500单位都为毫安,这两个数值是物理学上给出的粗略系数,但是对于电池管理来说具备一定的参考价值,谢谢!

锂电池的充电方式是限压恒流,都是由IC芯片控制的,典型的充电方式是:先检测待充电电池的电压,如果电压低于3V,要先进行预充电,充电电流为设定电流 的1/10,电压升到3V后,进入标准充电过程。标准充电过程为:以设定电流进行恒流充电,电池电压升到4.20V时,改为恒压充电,保持充电电压为 4.20V。此时,充电电流逐渐下降,当电流下降至设定充电电流的1/10时,充电结束。下图为典型的锂电池充电曲线。

电脑的USB输出电压为5V,非常精准,绝对不会让充电IC不能工作,否则根本不能用USB口充电了,之所以大家觉得USB充不满,是因为USB输出电流 小,而充电的最后阶段,需要有涓流充电。涓流充电是用来弥补电池在充满电后由于自放电而造成的容量损失。电池在充满电后,由于自放电损失的容量大约是标称 容量的5%。理论上说涓流充电要在充电电流的1/500级别,USB电流只有500mA,涓流很小了,所以这个过程很慢很慢,你等不及拔下来,5%就没 了。不过锂电池的特性适合常用常充,也不怕浮充什么的,对寿命没有太大影响。最怕的是大电流充并超过4.2V的截止电压,还有怕过放。

另外手机数码产品的锂电池都有保护板,有限制最低电压和限制充电电流的作用。

经测试,笔记本电脑USB口对手机充电,与座充对裸手机电池充电相比,充电电压略高(5V:4.2V),充电电流略低(190mA:220mA),但换台 式机的USB口,充电电压仍为5V,充电电流涨为230mA。综合实验结果,两种充电方式并无明显不同,USB充电会漏电的说法不正确。

但是,此种方式对手机USB充电的测试,是置于手机内部充电电路之前,并不是加载到手机里的电池触点上的数据,有理由认为经手机充电电路的处理,其充电参数与座充更加接近。这项实验择机再做。

android电池充电时间计算相关推荐

  1. android 电池运行时间计算,android 电池充电时间计算方法

    最近在做android手机电池管理相关的项目,其中有一个需求是计算手机充电时间的.翻阅了一些资料和一些相关的竞品,发现每个产品的在手机充电时长的计算上多不是很统一,后来翻阅了物理学的一些知识和文章,总 ...

  2. ActivityManagerService解读之Activity启动时间闲聊--Android Framework层时间计算介绍

    从ActivityManagerService解读之Activity启动初探,到ActivityManagerService解读之Activity启动再探,到ActivityManagerServic ...

  3. Android源码之剩余充电时间计算

    连接电脑USB充电,50%提示需要4H充满,55%需要5H充满 分析: 电量充满时间 = 充一格电所需的时间 x (100-当前电量) 充一格电所需的时间 = 充电总时间/充电格数 mBatteryL ...

  4. Android5.1 电池充电剩余时间计算

    android5.1手机在充电的时候,并且在锁屏界面的时候会显示还剩多少时间电池充满电.我们就这个机制进行下深入分析: 首先对电池的变化都会监听BatteryService发出的Intent.ACTI ...

  5. Android日期时间与时区使用总结汇总

    Android中关于日期时间与时区的使用总结 2017年03月22日 11:11:23 微信号 lanjixingxun 阅读数:5356 关于Android 实际开放中,涉及时间转换问题,还是很有必 ...

  6. 充电速度公式_充电电池充电时间计算方法

    一般电池容量大小都在电池上注明,以毫安为单位,数值越大容量越大. 例如: 1200mAh 就是表示电池的容量是 1200 毫安.同时,充电器一般也标有充电电流,同 样以毫安为单位. 这样, 电池充电时 ...

  7. Android - System.currentTimeMillis()计算时间差出现负数(NITZ和NTP机制学习)

    一.问题描述 前几天APP突然爆出个问题,recyclerview中的item点击没反应,低概率,之前一直没遇到过. 二.问题原因 复现后看log发现,代码在点击事件中加个isFastClick判断, ...

  8. 【Android系统】Android开机时间分析

    参看博客: https://www.jianshu.com/p/30fdf86c3462?from=singlemessage                                      ...

  9. Android系统时间更新机制

    系统设置–日期和时间–自动确定日期和时间:  智能机 提供2类日期和时间同步方式:  使用网络提供时间  使用GPS提供时间  以及"自动确定时区"的选项.  Android 之时 ...

最新文章

  1. OLE 操作Excel 详解(转)
  2. 基于FPGA实现IIC接口(EEPROM)
  3. 粒子群优化算法的实现
  4. 四叉树 gis java_GIS中四叉树索引及其分类介绍 | 麻辣GIS
  5. 计算机与医疗PPT,《人工智能医药》ppt课件
  6. ps抠头发丝教程图解:ps抠图抠头发丝的方法
  7. C# 导入.reg文件
  8. 单火线智能开关设计笔记
  9. 抓包工具 - HttpWatch(功能详细介绍)
  10. 解决:The server time zone value ‘�й���׼ʱ��‘ is unrecognized or represents more than one time zone.
  11. Android NFC智能卡介绍
  12. android os 1.5 下载地址,技德Remix OS 1.5发布 适配Android 5.0
  13. 贪心算法or背包问题
  14. sql server使用教程(图文)
  15. saas系统分几种类型
  16. 馬斯洛:自我實現者,有16種共同特徵
  17. D3DCompiler_47.dll丢失怎么解决-D3DCompiler_47.dll丢失怎么办
  18. html5图片平铺的代码,jQuery图片平铺效果制作网页背景图片平铺代码
  19. package is corrupt, exception while verifying: undefined method `size' for nil:NilClass (NoMethodErr
  20. 机器学习9 -- 模型压缩和加速

热门文章

  1. 计算机网络授时设置,网络授时系统,网络校时系统
  2. socket通信项目开源c语言,优秀的国产高性能TCP/UDP/HTTP开源网络通信框架——HP-Socket...
  3. MATLAB2016笔记(八):符号数学计算(MATLAB-Maple组件)
  4. 微信中接收的word文件怎样保存到电脑
  5. 荣耀 6p android 5.0,荣耀6/6Plus更新EMUI 5.6.1开发版
  6. java毕业设计爱家家政公司网站Mybatis+系统+数据库+调试部署
  7. php 凯撒加密解密,PHP脚本实现凯撒加(解)密
  8. 说说background-size:cover;与background-size:contain的区别
  9. 基于python+selenium+Chrome自动化爬取巨潮资讯网A股财务报表
  10. Docker服务正常运行一段时间后突然无法访问问题排查