iOS电池相关API

iOS电池相关API

iOS系统中关于电池的Api较少,据本人了解目前仅有两种电视相关的Api,一种是电量状态,一种是电池状态。

开启电池监听

在使用电池相关API的时候需要先开启电池监听,开启代码如下:

1
UIDevice.current.isBatteryMonitoringEnabled = true

获取电池状态

1
2
print(UIDevice.current.batteryLevel);
print(UIDevice.current.batteryState);

batteryLevel 表示电量信息,取值范围是0~1.0,如果获取的值为-1,则表示当前电池状态为未知,如:在模拟器上运行代码。

batteryState 表示电池状态,是一个枚举类型,如下:

1
2
3
4
5
6
public enum UIDeviceBatteryState : Int {
case unknown //电池状态未知
case unplugged // 电池未连接充电器,处于放电状态
case charging // 电池已经连接了充电器,但并没有充满。
case full // 电池已经连接了充电器,并且已经充满。
}

监听电池状态

系统为我们提供了两个通知,方便我们去监听电池状态的变化。分别是:UIDeviceBatteryLevelDidChangeUIDeviceBatteryStateDidChange。 使用方式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
func adBatteryObserver() {
NotificationCenter.default
.addObserver(self,
selector: #selector(batteryLevelDidChange(notify:)),
name: NSNotification.Name.UIDeviceBatteryLevelDidChange,
object: nil)
NotificationCenter.default
.addObserver(self,
selector: #selector(batteryStateDidChange(notify:)),
name: NSNotification.Name.UIDeviceBatteryStateDidChange,
object: nil)
}
@objc func batteryLevelDidChange(notify:Notification) {
self.textLabel2.text = "当前电量为:" + String(UIDevice.current.batteryLevel);
}
@objc func batteryStateDidChange(notify:Notification) {
self.textLabel2.text = "当前电量为:" + String(UIDevice.current.batteryLevel);
switch UIDevice.current.batteryState {
case .charging:
self.textLabel.text = "charging"
break
case .unknown:
self.textLabel.text = "unknown"
break
case .unplugged:
self.textLabel.text = "unplugged"
break
case .full:
self.textLabel.text = "full"
break
}
}

小结

以上就是iOS电池相关的API,如有遗漏欢迎补充。