如何使用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
相关产品推荐
相关产品推荐

