【问题标题】:How to fetch battery information in swift?如何快速获取电池信息?
【发布时间】:2017-09-02 05:38:36
【问题描述】:

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

【问题讨论】:

  • 你检查过这个link 吗?
  • @AdityaSrivastava 找到的电池信息与您从 UIDevice 属性中获得的相同。
  • @AdityaSrivastava 我刚刚做了,除了 UIdevice 支持的以外没有什么了。

标签: ios swift battery


【解决方案1】:

UIDevice 提供的只是您指出的级别,以及它的current state(见下文)。您感兴趣的其余项目要么需要使用私有 API,这会导致您的应用被商店拒绝,要么根本无法通过任何 API 提供给您。

对于任何想了解您可以从 UIDevice 获得与电池相关的信息的人,这涵盖了 Apple 官方 API:

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

可能的状态是:

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

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

charging - 设备已插入电源且电池电量低于 100%。

full - 设备已插入电源,电池已充电 100%。

【讨论】:

  • 好吧,这并不奇怪,因为我已经搜索了很多关于这个问题的内容。我想我会放弃它。谢谢!
【解决方案2】:

首先启用电池监控:

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")
    }
}

【讨论】:

    猜你喜欢
    • 2011-03-10
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    相关资源
    最近更新 更多