如何通过编程停止安卓设备的充电?

60

即使物理上正在充电,是否有 Android API 可以停止充电?


4
非常有价值的问题,因为避免过度充电以减少电池老化是很好的。然而,答案非常简单:没有API可以实现这一点 :( - 3c71
https://dev59.com/fWQo5IYBdhLWcg3whPki 这篇文章提到,在已经root的设备上,可以通过编程实现停止手机通过USB充电的功能。 - Tom
9个回答

15

根据之前的回答,似乎软件独立完成此操作的方法是不存在的。不过,通过一点硬件帮助,即使用任何带有开放API的蓝牙或WiFi智能电源开关,就可以相对容易地实现它。手机可以在需要时以编程方式打开或关闭充电器。


1
完全是个好的解决方案。不知道为什么有人给你点了踩。请参考如何自动停止手机充电 - Paul Jurczak
严格来说,它回答的是一个不同于所问问题的问题。但既然对所问问题的答案是“否”,那么我建议的比没有好。至于你链接的帖子 - 那基本上就是我最终所做的事情,只不过我买了一个有两个可切换插座的不同设备,而不仅仅是一个,而且它只在亚马逊上花费了27美元(提示 - 它的名字中有“天才”一词)。 - Kibber
2
这个答案是完全错误的。你可以通过软件从 /sys/class/power_supply/battery/device/charge 接口来完成,但在大多数系统中只有 root 用户才能写入它。 - hanshenrik
1
@kibber 那篇链接的文章已经404了,你写过Android应用吗?有没有源代码方便分享? - Lavamantis
1
我曾经使用过Tasker、Wink和IFTTT(当时它还是免费的)。现在没有那些脚本了,但它们非常简单。今天我可能会用Tasker和这个链接中的某些东西: https://iot.stackexchange.com/questions/3437/are-there-any-smart-electrical-plugs-with-an-open-api - Kibber

10

即使物理上正在充电,是否有一个Android API可以停止充电?

据我所知,没有。

原因:

android.intent.action.BATTERY_CHANGED是受保护的意图,只能由系统发送。因此,您不能复制或覆盖其功能。


6
这个应用怎么样?https://play.google.com/store/apps/details?id=es.guille.stopcharge - Machado
3
需要ROOT权限。 - Mohsin
使用该意图会停止手机充电吗?如果我将一个电池发送到100%的意图作为系统,它会执行吗?(将应用程序作为系统应用程序) - Edw590

8

你们都没有理解这一点 - 限制充电的目的是为了通过避免完全充电状态(以及接近耗尽电量,但这是另一个问题)来增加电池的寿命。如果你预计需要充满电,则告诉它充到100%。

如果无法设置充电限制,则电池很少处于空闲状态,并在连接器上充电时最好完全充电。不过,可能需要设备级别的支持。


2
不充电至100%的原因是为了避免在充电超过70%和热量结合时加速老化。另一方面,放电至0%对电池寿命没有负面影响,并且已经得到很好的保护,因为电池可以降至2800mV而不会老化,大多数设备将其限制在3200mV。这些信息来自(难以找到的)电池制造商和用户手动测试排放。 - 3c71
1
@3c71,将锂离子电池放电至0%(甚至是制造商告诉您的“0%”)肯定会对电池的寿命产生不良影响。 - Nate
1
@Nate,一点也不会,我在许多设备上都这样做过,从来没有失去过任何容量,原因非常简单:只有当电池的充电水平低于制造商设置的3.2V / 0%时,电池才会恶化到2.8V以下。其他电工/工程师也通过实际测试和实际测量证实了这一点。 - 3c71
这不仅仅是关于管理电荷,也涉及到管理热量。例如,我的设备可以在充电时自动关闭显示屏并记录视频。当温度升高时,能够将充电速度“降档”将会非常有帮助。 - Darien
1
@3c71,我猜你就是BatteryMonitorWidget的3c71?你认为BatteryMonitorWidget能够支持如此描述的停止充电吗:https://dev59.com/Smw15IYBdhLWcg3wYKqo#36229927? - Kibber
@3c71 即使电量降至20%,相比只降至40%,对电池的损害也更大。这是一个比例尺。虽然0%并不会造成伤害,但如果能保持在其上方,会更有益。同样的事情也适用于高百分比。 - Lubo Kanev

8

4
与某些答案表明不可能的情况相反,使用ROOT确实是可能的。您可以在Play Store上找到一些应用程序来允许您这样做(当然需要具备root权限)。我尝试过的每个手机上都能正常运行的最佳应用程序是Battery Charge Limit。您可以从 Play StoreXDA discussion thread 上下载该应用程序。该应用程序正在积极开发中,因此,如果发现您的手机不受支持,请在其GitHub page上提交问题。

NB:我不是此应用程序的开发人员。


2
很遗憾,这是不可能的。Android只有读取电池数据的API。
电池充电控制是由Android内核和电池IC模块内部完成的。制造商会不时地进行更改,例如HTC将电池小周期设置在95-100%之间(我认为这是一个不好的想法),三星则会在充满后立即停止充电,但我从未见过一款设备能够在100%之前停止充电以减少电池老化:(。
如果我们幸运的话,sysfs接口可能有所帮助,但这需要root,并且会因设备而异。

1
只是补充一下,三星手机在充满电后不会停止充电。据我所知,它们会在此之后进行“涓流”充电,但是他们建议您不要超过1小时将手机充电至100%。像Anker这样的电池制造商也表示同样的建议,因此在100%时停止充电的想法将非常有用。让手机充电的风险是电池膨胀和最终细胞破裂。起初我并不知道这一点,结果在拥有手机的3个月内就杀死了我的三星电池。
扩展原始问题。 我注意到一些内核可以进行快速充电。 如果它们能够提高充电速率,那么我们是否可以将充电速率降低(涓流),以达到期望的完成时间(当早晨闹钟响起)?

0

我在手机充电器插座上安装了一个定时器。在大致估算出电池需要充电到85%左右所需的时间后,我设置了定时器。这不是我的解决方案,但至少它可以防止我的手机充电到100%,因为我通常在设置计时器时会犯错误。


-1

我认为不会有这样的API。如果确实存在,它需要得到设备制造商的支持,因为它不是纯操作系统级别的功能。同样的原因也使得使用它成为一个坏主意,因为并非所有设备都支持它。

话虽如此,使用/实现它是一个坏主意,移动设备并不是为直接从电源供应运行而建造的,如果用户不想真正充电设备,他/她就不会插入电缆。


我想这么做的原因是我想开发一个应用程序,当电池充满时停止充电,并在电量降至95%时重新开始充电。这将节省大量电力,因为充电器只会在必要的时间内工作,而不是整夜充电。考虑环保... - daniel
@daniel 我相信手机已经可以做到这一点(可能不是 95%,但某个百分比小于 100%)。阅读此文:http://www.androidcentral.com/bump-charging-what-it-and-how-do-it - Glendon Trullinger
@Glendon Trullinger,你说得很有道理,我猜只有开发人员才会遇到这个问题:-),顺便说一下,当不需要使用时,将屏幕关闭/锁定似乎可以帮助解决我的温度问题。 - Ravi Vyas
@Ravi,我删掉了我的评论,因为我意识到我可以拆下电池来尝试解决那个特定的问题。我很快就会尝试一下XD。 - Glendon Trullinger
有趣的是..我刚在我的手机上(Droid X)尝试了一下,插上USB后也出现了同样的问题。但是,如果不插电池而是插在墙上,它就可以正常运行。我猜USB输出的电力不足以维持设备的运行。 - Glendon Trullinger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接