【问题标题】:How to disable battery charging during ADB connection?如何在 ADB 连接期间禁用电池充电?
【发布时间】:2015-08-24 06:20:05
【问题描述】:

问题描述: 每次我在 PC 和手机之间连接 USB 数据线时,电池都会自动充电。我想使用 ADB 协议,但我不想在 ADB 连接期间为电池充电。是否可以关闭此充电?当然,我该怎么做?

环境: 搭载 Android os 4 及更高版本的手机

我只需要提及我的参考设备在 android 5 上运行,因此没有 /sys/class/power_supply/battery/force_usb_charging 文件

【问题讨论】:

  • 我认为不可能这样做。
  • Android 版本和它在某些设备上运行的 BSP 之间没有链接(即你的最后一句话没有意义)。回答您的问题 - 可以完成,但说明将针对特定设备。
  • @Bidhan A - 谢谢你的回复,但参考这篇文章forum.xda-developers.com/showthread.php?t=1662337我认为应该可以(当然你也可以)
  • @CommonsWare - 谢谢你的回复。当然 wifi 就是这样 :-) 但我需要使用 USB 连接
  • @Alex P - 感谢您的回复 - 参考上面的链接,有人在 android 4 上制作了一些信息(如果我没记错的话),这就是我提到我的操作系统的原因版本和这个文件。我当然同意你的观点,这取决于设备。

标签: android usb adb


【解决方案1】:

大概可以通过(root权限)来完成:

/sys/devices/battery.XX/power_supply/battery/hv_charger_set

0 - 禁用 USB 充电

1 - 启用 USB 充电

【讨论】:

  • 从未想过会有这样的事情发生。如果你用完这个设置会发生什么
  • 那我希望你的手机有无线充电功能:)
  • 谢谢!这是在我手机上的不同位置,但hv_charger_set 也是我需要的东西。效果很好!谢谢
【解决方案2】:

你可以让系统认为它没有使用

adb shell dumpsys 电池拔掉

参考这篇好文章: https://stanfy.com/blog/android-shell-part-1-mocking-battery-status/

【讨论】:

  • 我在状态栏看到充电图标变成了普通电池图标,但是为什么电池电量过了很久还是显示100%
  • @Corey 请参阅francis duvivier's 答案。它回答了你的问题。你是怎么错过它作为开始的xD。
【解决方案3】:

注意:adb shell dumpsys battery unplug 仅模拟电池状态。我检查了我的 USB 电缆上的电流指示器,这根本不会改变流动的电流量,因此电池仍在充电。 它只会改变应用程序对状态的看法,例如,如果您配置了它只能在充电时更新,则 google play 将不会开始更新...

/sys/devices/battery.XX/power_supply/battery/hv_charger_set 之类的文件的值更改为 0 确实有效,但它对于每个设备来说都是不同的文件。例如,对于我的带有 snapdragon 805 的 yotaphone 2,有一个文件:/sys/devices/qpnp-charger-14/power_supply/battery/charging_enabled

所以你可以制作一个可以在 tasker 中使用的脚本(如果你有 root):

echo $1 > /sys/devices/qpnp-charger-14/power_supply/battery/charging_enabled

如果你将它写入一个可执行文件 /data/setcharging.sh 那么你可以调用像 /data/setcharging.sh 0 这样的脚本来禁用或 /data/setcharging.sh 1 启用。

这有效,我检查了我当前的计量 USB 电缆,但它没有显示它在电池状态图标中有效。所以你可以结合使用这个和adb shell dumpsys battery unplug / reset 让它看起来更好,但问题是像tasker这样的应用程序不知道你是否有交流电源,所以当你'已将其设置为不插电...

还有一件事,我还测试了它在恢复 (twrp) 和启动期间的作用。事实证明,在启动和恢复过程中,充电正常工作。因此,如果您忘记再次打开充电,您的设备不会最终死机。您始终可以在恢复模式下对其充电,然后重新启动并再次更改值(如果您的恢复允许访问 adb,则在恢复期间更改它)。

最后,Play 商店中有专门为此而设计的应用程序,但我建议您购买这种电流指示 USB 电缆,并检查它们是否真的按照他们所说的进行,而不仅仅是在嘲笑。

【讨论】:

    【解决方案4】:

    在有根设备上试试这个:

    启用电池充电:

        adb shell dumpsys battery set ac 1
        adb shell dumpsys battery set usb 1
        adb shell dumpsys battery set wireless 1
    

    禁用电池充电:

        adb shell dumpsys battery set ac 0
        adb shell dumpsys battery set usb 0
        adb shell dumpsys battery set wireless 0
    

    【讨论】:

    • 你知道这是否真的停止充电了吗?喜欢frank's 的答案?或者它只是阻止应用程序看到它正在充电,就像 francis duvivier 所说的另一个命令?
    【解决方案5】:

    如果 android 操作系统版本超过 6,请拔下并重置以恢复。

    adb shell dumpsys battery unplug
    adb shell dumpsys battery reset
    

    【讨论】:

      【解决方案6】:

      从 perfetto.dev 复制

      在有根手机上,电源管理 IC 驱动程序允许断开 USB 充电,同时保持 USB 数据链路处于活动状态。此功能是 SoC 特定的,未记录在案且未通过任何 HAL 公开。例如,在 Pixel 2 上,这可以以 root 身份运行:echo 1 > /sys/devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2 :qcom,qpnp-smb2/power_supply/电池/input_suspend。请注意,在大多数设备中,内核 USB 驱动程序持有唤醒锁以保持 USB 数据链路处于活动状态,因此即使关闭屏幕,设备也永远不会完全挂起。

      【讨论】:

      • 一个更简单的方法可能是使用无线调试,在这种情况下你有 adb,你没有充电。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 2011-07-29
      相关资源
      最近更新 更多