×

iOS电池相关API

96
RiverLi
2018.02.09 14:10 字数 237

iOS电池相关API

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

开启电池监听

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

UIDevice.current.isBatteryMonitoringEnabled = true

获取电池状态

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

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

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

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

监听电池状态

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

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,如有遗漏欢迎补充。

交流群

QQ群号:264706196
iOS开发
Web note ad 1