You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Kotlin编程获取电池充电器的电流(安培)信息?

在Kotlin中获取充电器电流信息

实时充电电流(电池输入/输出电流)

这个值表示当前电池的实际充电(正数)或放电(负数)电流,单位通常为微安(μA),转换为毫安(mA)需除以1000。

Android 8.0(API 26)及以上

直接通过BatteryManager的电池属性获取,无需额外权限:

import android.content.Context
import android.os.BatteryManager

fun getBatteryCurrent(context: Context): Double? {
    val batteryManager = context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager
    return try {
        // 获取当前电流(微安),转换为毫安
        val currentMicroAmp = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_NOW)
        currentMicroAmp / 1000.0
    } catch (e: Exception) {
        // 部分设备可能不支持该属性,返回null
        null
    }
}

Android 5.0(API 21)到7.1(API 25)

通过ACTION_BATTERY_CHANGED广播获取:

import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.BatteryManager

fun getBatteryCurrentLegacy(context: Context): Double? {
    val batteryIntent = context.registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED))
    return batteryIntent?.let { intent ->
        // EXTRA_CURRENT 单位为微安,转换为毫安
        val currentMicroAmp = intent.getIntExtra(BatteryManager.EXTRA_CURRENT, 0)
        currentMicroAmp / 1000.0
    }
}

充电器额定电流(充电器最大输出电流)

没有统一的公开API能在所有设备上获取该值,不同充电场景(有线、无线、USB)的获取方式差异较大:

  • 有线充电(USB/AC):部分设备可通过UsbManager获取连接的USB设备属性,解析其描述符中的电流信息,但需要android.permission.USB_PERMISSION权限,且兼容性极差。
  • Android 10(API 29)+:可尝试读取BatteryManager.EXTRA_CHARGE_CURRENT_LIMIT,该值表示当前充电的最大允许电流(毫安),但仅部分厂商设备支持。

注意事项

  • 所有电流值的准确性依赖设备硬件和系统固件的支持,部分低端设备可能无法返回有效数据。
  • 实时电流会随充电状态、设备负载变化而动态改变。

内容的提问来源于stack exchange,提问作者Victor Gomes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 18:30:07