美文网首页
iOS电池相关API

iOS电池相关API

作者: 面试小集 | 来源:发表于2018-02-09 14:10 被阅读78次

    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电池相关API

          本文链接:https://www.haomeiwen.com/subject/vibftftx.html