如何在iOS及iPad设备上通过编程区分Type-C与Lightning充电器?
解决方案:使用系统原生API识别充电器类型
不同平台都提供了无需硬编码设备映射的API,能自动识别当前连接的充电器类型,适配新设备无需手动维护:
Android 平台
- Android 11(API Level 30)起,
BatteryManager新增getChargeController()方法,可获取ChargeController实例,通过它能直接获取充电功率、充电状态(有线/无线/快充等):
BatteryManager batteryManager = (BatteryManager) getSystemService(Context.BATTERY_SERVICE); if (batteryManager != null) { ChargeController chargeController = batteryManager.getChargeController(); if (chargeController != null) { int chargePower = chargeController.getCurrentChargePower(); // 单位:mW int chargingStatus = chargeController.getChargingStatus(); // 根据chargingStatus常量判断类型,如CHARGING_STATUS_FAST_CHARGE代表快充 } }
- Android 12(API Level 31)进一步支持
getWirelessChargingType(),可直接区分无线充电的具体类型(如Qi、MagSafe等)
iOS 平台
- iOS 14及以上可通过
IOPMPowerSource相关API获取电源详情,包括充电器类型、功率等:
import UIKit import IOKit.ps func fetchChargerInfo() { guard let powerSources = IOPSCopyPowerSourcesInfo().takeRetainedValue() as NSArray, let powerSource = powerSources.firstObject as? NSDictionary else { return } let chargerType = powerSource[kIOPSPowerSourceTypeKey] as? String let maxPower = powerSource[kIOPSMaxPowerCapacityKey] as? String // chargerType返回值示例:AC Power(有线充电)、Wireless Charger(无线充电) }
注意事项
- 部分API需要对应权限,比如Android需申请
BATTERY_STATS权限,iOS需启用电源访问相关权限 - 这些API由系统底层提供,会自动适配新发布的设备和充电器类型,无需手动维护设备映射表
内容的提问来源于stack exchange,提问作者tounaobun
相关产品推荐
相关产品推荐

