Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> iOS

วิธีตรวจสอบระดับแบตเตอรี่และสถานะ (ชาร์จ, ไม่ได้ชาร์จ, เต็ม) บน iOS

การตรวจสอบสถานะและระดับแบตเตอรี่บน iOS

บทความนี้แนะนำวิธีการอ่านสถานะแบตเตอรี่ (Charging, Unplugged, Full, Unknown) และระดับแบตเตอรี่แบบ Real-time

ขั้นตอนที่ 1: สร้างโปรเจกต์

Xcode → New Project → Single View Application → ชื่อ "BatteryState"

ขั้นตอนที่ 2: เพิ่ม Label 2 ตัวใน Storyboard

หนึ่งตัวสำหรับแสดงสถานะ อีกตัวสำหรับแสดงระดับเปอร์เซ็นต์ (ถ้าต้องการ)

ขั้นตอนที่ 3: เปิดใช้งาน Battery Monitoring

UIDevice.current.isBatteryMonitoringEnabled = true

วางใน viewDidLoad เพื่อให้ระบบเริ่มรายงานสถานะแบตเตอรี่

ขั้นตอนที่ 4: สร้าง Computed Property สำหรับอ่านสถานะ

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

ขั้นตอนที่ 5: เพิ่ม Observer สำหรับการเปลี่ยนแปลงสถานะ

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

ขั้นตอนที่ 6: จัดการเมื่อสถานะเปลี่ยนแปลง

@objc func batteryLevelDidChange() {
    updateBatteryStateLabel()
}

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

ขั้นตอนที่ 7: เรียกใช้งานใน viewDidLoad

override func viewDidLoad() {
    super.viewDidLoad()
    UIDevice.current.isBatteryMonitoringEnabled = true
    NotificationCenter.default.addObserver(
        self,
        selector: #selector(batteryLevelDidChange),
        name: UIDevice.batteryLevelDidChangeNotification,
        object: nil
    )
    updateBatteryStateLabel() // แสดงสถานะเริ่มต้น
}

หมายเหตุสำคัญ

  • ต้องทดสอบบนอุปกรณ์จริง (Simulator ไม่รองรับ Battery state)
  • 記得移除 Observer ใน deinit เพื่อป้องกัน Memory Leak
  • สามารถอ่านระดับแบตเตอรี่ได้จาก UIDevice.current.batteryLevel (ค่า 0.0 - 1.0, -1.0 = unknown)