Computer >> Máy Tính >  >> Lập trình >> IOS

Làm cách nào để tôi có được mức và trạng thái pin (cắm vào, xả, sạc, v.v.) trong iOS?

Trong bài đăng này, chúng ta sẽ xem cách lấy trạng thái pin trong iOS.

Vì vậy, hãy bắt đầu.

Bước 1 - Mở Xcode → Dự án mới → Ứng dụng một lần xem → Đặt tên cho nó là “BatteryState”

Bước 2 - Mở Main.storyboard và thêm hai nhãn như hình dưới đây. Trên nhãn này, chúng tôi sẽ hiển thị trạng thái pin.

Làm cách nào để tôi có được mức và trạng thái pin (cắm vào, xả, sạc, v.v.) trong iOS?

Bước 3 - Bật theo dõi trạng thái pin, sử dụng mã sau. Bạn có thể đặt mã này trong viewDidLoad của ViewController

UIDevice.current.isBatteryMonitoringEnabled = true

Bước 4 - Khai báo một biến để giữ trạng thái của pin. Chúng tôi sẽ đặt tên biến này là batteryState. Từ biến này, chúng tôi sẽ trả về UIDevice.current.batteryState, điều này sẽ cung cấp cho chúng tôi trạng thái pin hiện tại

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

Bước 5 - Bạn sẽ cần thêm trình quan sát để biết thông báo thay đổi trạng thái pin. Thông báo này được gửi bởi iOS bất cứ khi nào trạng thái pin thay đổi. Bạn có thể thêm trình quan sát trong viewDidLoad như hình dưới đây

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

Chúng tôi đã thêm trình quan sát, hàm pinLevelDidChange sẽ được gọi bất cứ khi nào mức pin thay đổi.

Bước 6 - Xử lý các thay đổi mức pin trong phương pháp batteryLevelDidChange. Xác định phương pháp như sau

@objc func batteryLevelDidChange() {
   updateBatteryStateLabel()
}
func updateBatteryStateLabel() {
   var status = "Unknown"
   switch batteryState {
      case .charging:
      status = "Charging"
      case .unknown:
      status = "Unknown"
      case .unplugged:
      status = "Unplugged"
      case .full:
      status = "Full"
   }
   DispatchQueue.main.async {
      self.batteryStateLabel.text = "Battery State: \(status)"
   }
}

Ở đây chúng tôi đã xác định chức năng updateBatteryStateLabel để cập nhật nhãn. Chức năng này chúng tôi đang gọi từ chức năng quan sát của chúng tôi, tức là pinLevelDidChange. Chức năng updateBatteryStateLabel cũng phải được gọi từ viewDidLoad để hiển thị trạng thái pin ban đầu. ViewDidLoad của chúng tôi trông giống như sau sau khi thực hiện tất cả những điều này

override func viewDidLoad() {
   super.viewDidLoad()
   UIDevice.current.isBatteryMonitoringEnabled = true
   NotificationCenter.default.addObserver(self, selector: #selector(batteryLevelDidChange), name: UIDevice.batteryLevelDidChangeNotification, object: nil)
   updateBatteryStateLabel()
}

Chạy mã trên thiết bị, dựa trên trạng thái pin, bạn sẽ thấy các trạng thái khác nhau như được mô tả trong hình dưới đây.

Làm cách nào để tôi có được mức và trạng thái pin (cắm vào, xả, sạc, v.v.) trong iOS?