【问题标题】:How to stop the phone from charging via USB programmatically如何以编程方式阻止手机通过 USB 充电
【发布时间】:2013-04-06 07:05:46
【问题描述】:

我已尝试进行尽可能多的研究,但找不到这个相当简单的问题的答案(想在设置 SDK 和所有内容之前弄清楚这一点)。我在想关于开发我的第一个应用程序,我想知道BatteryManager 中的BATTERY_STATUS_CHARGING 是否只包含get 函数或还包含set 函数。

我不想制作一个应用程序,我可以在其中手动停止手机充电而无需将其从充电器上拔下(通过 USB),所以我想知道这是否真的可行。

【问题讨论】:

标签: android battery setvalue


【解决方案1】:

不,这在无根设备上是不可能的。它使用Settings.SystemADB_ENABLED,但ADB_ENABLED 是一个不能被应用程序更改的安全系统设置。

是的,可以在root手机上完成。

需要添加权限android.permission.WRITE_SECURE_SETTINGS.

Google Play 上的同类型应用:https://play.google.com/store/apps/details?id=com.jim2&hl=en

【讨论】:

    【解决方案2】:

    很遗憾,这是不可能的。 Android 只有读取电池数据的 API。 ADB_EN​​ABLED 在这种情况下也无济于事,因为它只是通过 USB 启用调试。

    电池充电控制在 Android 内核和电池 IC 模块内部。制造商确实会不时更改它,但它不适用于没有 root 权限且无法通过一些棘手的接口控制 IC(集成芯片)模块的应用程序,这实际上对于几乎所有设备来说都是不同的!

    如果我们幸运的话,最好是一个 sysfs 接口可能会帮助做到这一点,但它再次需要 root 并且可能因设备而异。

    【讨论】:

      【解决方案3】:

      您可以硬接线:12 欧姆的串行仍然可以让手机被计算机识别,但会缓慢放电。见附图。

      【讨论】:

        【解决方案4】:

        我知道这个帖子已经过时了,但无论如何都会发布我的答案,以便稍后到达这里的人。试试这个:-
        echo 0 > /sys/class/power_supply/batterycharging_enabled/charging_enabled

        【讨论】:

        • 在我的手机中有这个文件:/sys/class/power_supply/battery/battery_charging_enabled - 将这个文件的内容更新为 0 停止充电(基于来自 AccuBatery 和 LED 的信息)。但我很好奇这是否安全。我不知道充电器是否真的停止提供货币,或者只是软件“认为”它没有收费。
        • @dey:这取决于您手机的实现。在我的 Xperia X Performance(API 级别 26)和 Xperia Ray(API 级别 15)上,一旦更新了相应的文件,就没有功耗。但是,X Performance 可以保持数小时而不会失去电量,而 Xperia Ray 的面糊会很快失去电量,并且必须不时充电(通过更改值)。
        【解决方案5】:

        连接USB时使用以下命令停止手机/掌上电脑充电:

        adb shell dumpsys 电池组 ac 0; dumpsys电池组usb 0;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-28
          • 2016-12-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-08
          • 1970-01-01
          相关资源
          最近更新 更多