版权声明:本文系作者原创,读者可随意网上转载,但请保留此版权声明。如果有什么问题需要讨论、发现错误想指正或者有其它出版意向,请通过新浪博客http://blog.sina.com.cn/felonwan或邮箱felonwan.AT.sina.com联系作者felonwan。

2016年02月15日更新:有网友对lspower这个脚本在哪儿有疑问,其实只需要创建一个名为lspower文本文件,把脚本内容复制粘贴进去就是这个lspower脚本了,可能还需要可执行权限,这个需要读者自己去了解下了。

(偶然登了下新浪邮箱,才发现15年有网友通过新浪邮箱联系过我,可惜我有时博客和这个邮箱都不太看。)

现在的手机,尤其平板,供电比较复杂:电池、DC、USB口都能对设备供电,同时USB口和DC还要对电池充电,而且锂电池一般有个芯片来管理充电,充电情况也是比较复杂的。如果同时插着USB、DC时设备,系统是怎么供电的呢?用USB口对手机和平板充电,是否只有500mA的电流?下面我就来验证一下。

我们知道,安卓系统的内核是Linux,Linux内核直接管理或监视很多设备,我们可以从内核就可以直接查询到电池、DC和USB口的供电电压、电流及功率(也就我们常说的多少瓦),还有充电的电量这些信息。下面我就提供一个脚本来查看这些信息。比起来一些应用软件提供的信息,这个都是我们自己能看到的,比较放心。当然这个脚本只能在Linux内核运行着的情况下,也就是机器开着时的状态,不能查看关机时设备用电状态。

一、脚本内容和分析

先看脚本:

# Collect power informations

bv=`cat

/sys/class/power_supply/battery/voltage_now`

bi=`cat

/sys/class/power_supply/battery/current_now`

uv=`cat /sys/class/power_supply/usb/voltage_now`

ui=`cat /sys/class/power_supply/usb/current_now`

av=`cat /sys/class/power_supply/ac/voltage_now`

ai=`cat /sys/class/power_supply/ac/current_now`

# Show power informations

echo -e "Power info:"

echo -e "  V(V)\t

I(mA)\t P(W)"

echo -e "AC:  "$(echo "$av" | awk '{printf

"%.3f\n",$1/1.0e6}')"\t "$(($ai/1000))"\t "$(echo "$av $ai" | awk

'{printf "%.3f\n",$1*$2/1.0e12}')

echo -e "USB:  "$(echo "$uv" | awk '{printf

"%.3f\n",$1/1.0e6}')"\t "$(($ui/1000))"\t "$(echo "$uv $ui" | awk

'{printf "%.3f\n",$1*$2/1.0e12}')

echo -e "Battery:  "$(echo "$bv" | awk

'{printf "%.3f\n",$1/1.0e6}')"\t "$(($bi/1000))"\t "$(echo "$bv

$bi" | awk '{printf "%.3f\n",$1*$2/1.0e12}')

我们分别从/sys/class/power_supply/目录下的battery、usb和ac目录读取信息,这三个目录分别对应电池、USB和DC口设备的信息。这三个目录的结构基本一样,下面都有voltage_now、current_now、uevent等文件。其中uevent中含有所有信息,比如上面的voltage_now、current_now信息其实也包含在里面,同时还有电池当前电量的百分比、电池设定的容量等信息。但是我们现在只是查看电压、电流和功率,有心的读者可以自己再去探索一番。

信息的显示,使用了命令awk来处理输出样式的对齐,所以需要安装有awk。安装awk最简单的方法是安装Busybox

Pro应用。

另外,大家也看到,这个脚本适用于充电驱动在系统注册的设备名为ac、battery和usb的情况,如果你的设备名不是这三个,需要自行修改一下名字。

二、使用和对输出信息的解读

下面以我的平板为例,说明一下使用和理解输出信息。

笔者的平板9.7吋屏,CPU是国产全志A10单核,电池是8000mAh的,有USB和DC口,系统是4.0.3,Linux内核3.0.8。在我的笔记本ThinkPad

E50上插USB口,用adb连接平板,读者可以安装终端软件,在终端软件中使用。DC口现在有些问题了,插着也没用,所以只插了USB口。(DC口在系统注册的名字是ac,所以脚本中也用AC代替)

笔者是在电脑上使用adb连接,这种方法适合对安卓有一定了解的用户,普通用户直接安装终端软件就可以用。由于只是查看信息,所以并不需要root权限。

安卓系统用电状况一:

关闭屏幕

root@android:/sdcard/Scripts # sh lspower

V(V) I(mA) P(W)

AC:  0.000 0 0.000

USB:  5.023 93 0.467

Battery:  3.727 48 0.179

安卓系统用电状况二:

打开屏幕,不做什么事

root@android:/sdcard/Scripts # sh lspower

V(V) I(mA) P(W)

AC:  0.000 0 0.000

USB:  5.026 93 0.467

Battery:  3.705 90 0.333

安卓系统用电状况三:

播放在线视频,外放音量开到最大时

root@android:/sdcard/Scripts # sh lspower

V(V) I(mA) P(W)

AC:  0.000 0 0.000

USB:  5.021 93 0.467

Battery:  3.691 163 0.602

从上面的结果来看,厂商提供的安卓系统,供电策略有些怪,USB和电池同时供电,而USB电压5V、电流93mA恒定不变,插着USB使用时不但不能给电池充电,反而以一定速度耗电。这个结果与安卓系统显示的电量是吻合的,之前发现平板开机插电脑上电量很久也没有增长,久了还自动关机,从这里来看就可以理解了。

相比之下,笔者自己编译的内核却是优先使用USB供电,USB供电电压随电池电压升高,电流基本恒定在1A左右,关闭屏幕时同时能给电池充电,只有在耗电较大时才使用同时开启电池供电。

另外值得一提的事是电池的充放电信息,笔者的这个电池只能看到放电电流,充电时从内核信息里只能看到电流为0,比较正常的情况应该是放电时电流为负,充电时为正,不充不放时为0才对。另外,像我的笔记本上的电池,从uevent的信息中能看到的信息要比这多,直接可以查看到功率、型号、厂商信息等。

从两种充电策略来看,笔者认为后者显然对于用户而言更好,可见国产厂商的系统优化还有待提高。而从电池的信息来看,国产厂商用的电池不是大厂生产,很多信息查不到,不是特别规范。

平板电脑的硬件成本非常低,现在已经不太可能完全靠堆硬件来赚取利润,国产名牌提高产品质量、做好系统优化就显得更加重要了。

测试android运行电流电压,[原创]安卓手机查看充放电电压、电流及功率相关推荐

  1. 安卓手机查看充放电电压、电流及功率

    2016年02月15日更新:有网友对lspower这个脚本在哪儿有疑问,其实只需要创建一个名为lspower文本文件,把脚本内容复制粘贴进去就是这个lspower脚本了,可能还需要可执行权限,这个需要 ...

  2. 视频消重软件吾爱伪原创 安卓手机怎么看视频md5

             视频消重软件吾爱伪原创 安卓手机怎么看视频md5        一百家公司爆炸并不容易.有必要慢慢发展主题和对内容的敏感性..       可以说社会视角文章适合普通大众,覆盖大量用 ...

  3. android安卓手机查看微信视频存储位置微信聊天视频位置

    android安卓手机查看微信视频存储位置微信聊天视频位置 如图: 里面那个87开头的随机文件名 每个人的手机是不一样的.

  4. android查ip地址,安卓手机查看IP地址的两种方法,  二、进入手机状态

    安卓手机查看IP地址的两种方法, 二.进入手机状态 无论是电脑链接宽带上网还是手机链接wifi上网,当我们在链接网络后,会自动分配一个独立的IP地址,对于电脑端的上网IP地址我们可通过ipconfig ...

  5. Android查询AirPods电量,安卓手机查看AirPods电量的方法

    在上一篇教程中,我们了解到了AirPods也是可以连接安卓手机使用的,但是有些功能可能没有苹果手机使用起来方便,比如在安卓手机上查看AirPods的剩余电量,就没有苹果手机用户使用AirPods时方便 ...

  6. 怎样在安卓手机查看公园广场绿化CAD设计图

    对于设计这一块,相信有很多人从事这个行业,无论是室内设计还是建筑设计都是近几年比较热门的行业,但是忙起来真的是无法形容,换个角度想想,哪有不累的活,对于在CAD这一块,平时绘制令客户满意的CAD设计图 ...

  7. android获取路由器ip地址吗,手机查看路由器设置网址(登录IP地址)的方法

    "路由器设置网址是什么?之前修改过路由器的设置网址,现在忘记了是多少,那么此时应该怎么办?"或许大家在使用自家路由器时,遇到了不知道设置网址是多少的问题.下面就来为大家介绍通过手机 ...

  8. android app应用后台休眠,安卓手机锁屏后程序自动关闭,怎么设置手机app允许锁屏后台运行...

    原标题:安卓手机锁屏后程序自动关闭,怎么设置手机app允许锁屏后台运行 安卓手机锁屏后,很多程序就会自动关闭,实际上,这是安卓手机的一种保护机制.为了使系统能够流畅稳定的运行以及更加省电,它都会在手机 ...

  9. android 电话号码发iphone怎么样,安卓手机如何轻松的向iPhone发文件呢?

    原标题:安卓手机如何轻松的向iPhone发文件呢? 资讯,今天给大家带来一个实用的小窍门.现在很多人都喜欢用手机拍照,那么问题来了.如果你用 iPhone 刚录的视频,想传到朋友的 Android 手 ...

最新文章

  1. java获取get请求返回_Java中处理调用第三方接口(post/get),该如何处理,返回的数据如何处理...
  2. list of Java class file format major version numbers?
  3. java neo4j rest api_Neo4j REST API使用教程
  4. 图像处理:像素间的基本关系
  5. JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet
  6. SAP UI5 的 兼容性规则 Compatibility Rules
  7. java 序列化声明_显式声明默认Java类序列化方法的原因是什么?
  8. 字符与编码(编码转换)
  9. 普通账户信息是SIEM的盲点
  10. 脚本化CSS类-HTML5 classList属性
  11. win7局域网共享设置_局域网硬盘一键共享软件下载-一键共享局域网修复查看设置工具包免费版...
  12. 用php打竖的文字_手写php函数处理 竖排文字
  13. 基于JavaWeb实现的问卷调查系统
  14. Java+MySql存储表情符
  15. U盘拷贝大文件提示文件过大无法拷贝解决方案
  16. 本本蓝屏,自己解决了,很高兴
  17. 金融壹账通重磅发布Gamma O开放平台,AnyChat携手共创开放银行新生态
  18. MAT无法打开较大的hprof的解决办法
  19. 新世界交互英语视听说下载
  20. Java pdf转jpg报错

热门文章

  1. Packet Sniffer设置过滤MAC地址
  2. 回退监听android,详解React Native监听Android回退按键与程序化退出应用
  3. 华为设备linux ssh登录失败,在华为设备上配置一个SSH登录案例
  4. 阿里云--云开发平台的创建与部署
  5. 阿里云提醒 网站被WebShell木马后门的处理过程
  6. MongoDB笔记记录(雷哥课堂)--mongodb介绍
  7. 《从0到1上线微信小游戏》第八节 在微信开发者工具和手机上调试
  8. 推荐系统从零单排系列(四)—Word2Vec理论与实践(上)
  9. PAT | T1007 Red-black Tree
  10. #c word转换PDF