为什么有些智能手机会专门设计一个“正在充电”的提示界面,甚至在电量过低时,即使插上电源,也拒绝启动?

2015-05-22 00:19:24 +08:00
 acess
手里有一个Android4.2的手机,关机后插上USB线,会启动,但应该只到Linux层完成启动的阶段,然后进入“充电模式”,显示一个“正在充电”的界面。这时长按电源,会重启一次,然后正常启动Android。
比较讨厌的是,如果电量过低,比如刚刚因为电量过低自动关机了,即使USB连接很好,也会在Linux刚启动完后提示“电量过低”,拒绝继续启动Android,然后重启进入“充电模式”,必须等到电量稍微增加后,才能在再次长按重启后正常启动Android。
据说iPhone也有类似的行为,电量过低时不能继续启动,必须充电几分钟后才可以正常启动。
不知道为何要这样设计?是为了保护电池,防止过放吗?还是其他原因?
我记得刷了CyanogenMod后,就不会有这种现象,关机后,插上USB线,只会充电,不会启动;长按电源键会直接开机,即使电量很低,刚刚自动关机,只要充电正常就可以正常开机。
4722 次点击
所在节点    问与答
14 条回复
sumhat
2015-05-22 00:28:25 +08:00
充电界面是告诉用户充电器正常工作,拒绝启动是因为……楼主没有碰到过打游戏的时候即使在充电也会电量减少的情况么?
acess
2015-05-22 00:41:44 +08:00
@sumhat 那么这么做是为了保护电池不过放吧。
但是在我看来,似乎bootloader已经可以独立处理电池电量的问题了。
至于告诉用户充电器正常工作,Android手机大多也有LED吧,这个灯一般也会指示充电状态,即使已经关机。
实际上刷了CyanogenMod后那种工作模式,的确在特殊情况下会过度放电(比如刚开始启动Android就拔线),但是过放后,再长按电源,屏幕根本不会亮,只会震动一下。
也许还有其他原因?比如,更好地控制充电过程?
powergx
2015-05-22 00:42:49 +08:00
锂电池空电 不能大电流充电,这时候没有足够的电量提供给启动机器使用,所以要等几分钟
acess
2015-05-22 00:48:56 +08:00
@powergx 进入充电模式时,实际上还是启动了,只是没有继续启动Android。
另外并不是所有Android手机都会在电量低时拒绝启动。
手里的另一个Android 4.4的,官方原装的ROM,虽然也有充电模式,但是并不会在电量低时拒绝启动,即使刚刚自动关机,充电模式显示电量0%,长按电源也可以立即重启、正常启动Android。
powergx
2015-05-22 00:54:05 +08:00
关键是电池管理的策略,空电小电流冲电池寿命更长。苹果是典范
acess
2015-05-22 01:17:32 +08:00
@powergx 那么对于Android来说,为什么需要专门启动Linux?是因为bootloader阶段实现充电状态指示、控制充电电流比较困难么?
kuxiazi
2015-05-22 01:47:12 +08:00
WP 插上充电器充电立马自动开机
Septembers
2015-05-22 06:35:17 +08:00
@acess bootloader(uboot)通常只负责初始化硬件加载kernel
Halry
2015-05-22 07:28:08 +08:00
bl只会处理linux内核,校验和提供fastboot界面。
有的机充电会用recovery的界面,有的会用Android的界面。
没见过有一部手机会在bl里处理充电的,因为充电要控制充电芯片,这个当然是linux内核来处理,symbian都是要载入基本系统的。
acess
2015-05-22 09:39:34 +08:00
@Septembers
@Halry

关机后,插上USB,屏幕完全不亮,也可以充电,还有没有在充电且电量很低时,长按电源键连屏幕也不会亮,这种情况在我曾经用了几年。我觉得关机时控制充电的至少不是Linux。
或者,出现“开机第一屏”并不表示处于bootloader阶段?
Heracles
2015-05-22 11:13:37 +08:00
万一启动了又断电怎么办?所以要充够
Halry
2015-05-22 14:39:11 +08:00
@acess 什么手机?htc?不是亮了红灯吗?
很多手机在电池真的一点点都没有的时候是不会亮屏幕的,是怕亮屏后又过放具体到底想不想亮屏是厂商决定的。
Qualcomm的芯片无论如何你插入usb,pmic启动唤醒ap,ap载入pbl,sbl,rpm
rpm就是关于电源管理的,pmic不会单独处理充电
acess
2015-05-22 16:24:58 +08:00
@Halry
谢谢,我只是对这个问题感到好奇,非专业人士。
“没有充电模式”的手机是中兴V880(ZTE Blade),刷了CM7。
我记得这部手机关机后,几乎是USB一接通,LED就点亮了,电量接近充满时直接亮绿灯,没充满时亮红灯。
那么这个LED难道是Linux控制的么?我觉得不像啊。
实际上另一部“有充电模式”的手机在电量耗尽自动关机后,如果不插上USB,长按电源也是不会亮屏的,只是插上了USB,启动到半路拒绝继续启动Android,让我感到有些不方便。
Halry
2015-05-22 20:39:58 +08:00
@acess cm7.....
说实在这些都是厂商里的程序员定的,自己喜欢的话可以试试改内核。
你看看灯亮了后过一阵就会闪一下?
我刚刚说错了,rpm只是控制电源管理,但真正控制手机的是little kernel也就是bl或者aboot。为什么不在aboot里面管充电?其实aboot也只管真正0电的充电,为什么给linux管我也不知道(应该是懒)。
给linux kernel充电有个好处是自己可以改,而且android里面充电本来就是kernel里面管的,不可能和lk联系(闭源),如果开机前充电还要给lk管那lk代码就冗余了。
关于你的手机的缺陷只能怪别人咯😁。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/192862

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX