如何在swift中获取电池信息?

时间:2017-09-02 05:38:37

标签: ios swift battery

在我的项目中,我想详细显示电池信息。使用UIDevice我可以轻松获得电池电量,但我的需求远不止于此。我想获得这样的电池健康状况,循环次数,电压以及更多关于电池的细节。 (越多越好!! )。我真的需要一些建议,谢谢!

2 个答案:

答案 0 :(得分:2)

UIDevice提供的所有内容都是您指出的级别及其current state(见下文)。您感兴趣的其余项目要么使用私有API,这会使您的应用从商店中被拒绝,或者根本无法通过任何API使用。

对于那些希望了解与电池相关的UIDevice相关内容的人来说,这涵盖了官方的Apple API:

  • var batteryLevel: CGFloat返回0.0(空)到1.0(完整)
  • 的值
  • var isBatteryMonitoringEnabled: Bool会返回truefalse,具体取决于您是否希望收到有关电池状态更改的通知。将其设置为true可以获得batteryState
  • var batteryState: UIDeviceBatteryState提供电池状态,如果unknown设置为false,则为isBatteryMonitoringEnabled

可能的状态是:

unknown - 无法确定设备的电池状态。

unplugged - 设备未插入电源;电池正在放电。

charging - 设备已接通电源且电池电量低于100%。

full - 设备已接通电源,电池100%充电。

答案 1 :(得分:1)

首先启用电池监控:

UIDevice.current.isBatteryMonitoringEnabled = true

然后你可以创建一个计算属性来返回电池电量:

var batteryLevel: Float {
    return UIDevice.current.batteryLevel
}

要监控设备电池电量,您可以为UIDeviceBatteryLevelDidChange通知添加观察者:

NotificationCenter.default.addObserver(self, selector: #selector(batteryLevelDidChange), name: .UIDeviceBatteryLevelDidChange, object: nil)


func batteryLevelDidChange(_ notification: Notification) {
    print(batteryLevel)
}

您还可以验证电池状态:

var batteryState: UIDeviceBatteryState {
    return UIDevice.current.batteryState
}



case .unknown   //  "The battery state for the device cannot be determined."

case .unplugged

 //"The device is not plugged into power; the battery is discharging"

case .charging 

 //  "The device is plugged into power and the battery is less than 100% charged."

case .full   

   //   "The device is plugged into power and the battery is 100% charged."

为UIDeviceBatteryStateDidChange通知添加观察者:

NotificationCenter.default.addObserver(self, selector: #selector(batteryStateDidChange), name: .UIDeviceBatteryStateDidChange, object: nil)

func batteryStateDidChange(_ notification: Notification) {
    switch batteryState {
    case .unplugged, .unknown:
        print("not charging")
    case .charging, .full:
        print("charging or full")
    }
}