实时查看电池充电状态是否变化Swift
Check if battery charging status changes in real time Swift
我想检查一下我的 iphone 是否在充电以及充电的百分比是多少。当我启动应用程序时,我能够获得百分比并知道它是否已插入,但是当我拔下充电器时我无法让它改变状态。本质上,我希望能够插入和拔出 phone 并让我的 Charge.text
字段状态从“正在充电”更改为“未插入”,反之亦然。
我实现了一个警告框,但它也只在我启动应用程序时弹出。我在那里找到了核心位置,因为我有一个实现位置反馈的想法,但现在没有使用,请忽略它。
在搜索论坛时,我似乎只得到关于如何检查一次的答案,而不是连续更新。我不知道“实时”描述是否有帮助,但我真的不知道如何描述它。请帮助:)
import UIKit
import CoreLocation
import Alamofire
import SwiftyJSON
class ViewController: UIViewController, CLLocationManagerDelegate {
@IBOutlet weak var Charge: UILabel!
@IBOutlet weak var resultsField: UILabel!
var chargingVar = ""
var batteryLevel: Float {
return UIDevice.current.batteryLevel
}
func batteryStatus() {
UIDevice.current.isBatteryMonitoringEnabled = true
batteryStateChanged()
switch UIDevice.current.batteryState {
case .unknown:
self.Charge.text = "BATTERY: UNKNOWN!"
case .charging:
self.Charge.text = "Charging..."
case .full:
self.Charge.text = "BATTERY full"
case .unplugged:
self.Charge.text = "unplugged"
default:
self.Charge.text = "nope"
}
}
func batteryStateChanged(){
if (UIDevice.current.batteryState == .charging) { UIApplication.shared.isIdleTimerDisabled = true
self.chargingVar = "is charging. \u{1F603}"
chargingAlaer()
}else{
self.chargingVar = "is not charging. \u{1F622} "
chargingAlaer()
}
}
func chargingAlaer(){
let alertController = UIAlertController(title: "Charging Status",
message: "Your device \(chargingVar)",
preferredStyle: UIAlertController.Style.alert)
let ok = UIAlertAction(title: "OK",
style: UIAlertAction.Style.default,
handler: {(action) -> Void in
})
alertController.addAction(ok)
self.present(alertController, animated: true, completion: nil)
}
@objc func displayBatteryCharge() {
self.resultsField.text = "\(batteryLevel * 100)%"
}
override func viewDidLoad() {
super.viewDidLoad()
UIDevice.current.isBatteryMonitoringEnabled = true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func viewDidAppear(_ animated: Bool) {
displayBatteryCharge()
batteryStatus()
}
}
基本上你所做的一切都是为了显示当前状态,现在你需要添加一些被通知的东西,或者定期检查所说的状态。
在这种情况下,我认为最好的方法是注册到 batteryStateDidChangeNotification
通知,只有当 isBatteryMonitoringEnabled
设置为 true 时系统才会发送该通知,就像您在 viewDidLoad
中所做的那样
我想加入
NotificationCenter.default.addObserver(
self,
selector: #selector(batteryStatus),
name: UIDevice.batteryStateDidChangeNotification,
object: nil
)
应该可以解决问题。例如在 viewDidLoad
中。
我想检查一下我的 iphone 是否在充电以及充电的百分比是多少。当我启动应用程序时,我能够获得百分比并知道它是否已插入,但是当我拔下充电器时我无法让它改变状态。本质上,我希望能够插入和拔出 phone 并让我的 Charge.text
字段状态从“正在充电”更改为“未插入”,反之亦然。
我实现了一个警告框,但它也只在我启动应用程序时弹出。我在那里找到了核心位置,因为我有一个实现位置反馈的想法,但现在没有使用,请忽略它。
在搜索论坛时,我似乎只得到关于如何检查一次的答案,而不是连续更新。我不知道“实时”描述是否有帮助,但我真的不知道如何描述它。请帮助:)
import UIKit
import CoreLocation
import Alamofire
import SwiftyJSON
class ViewController: UIViewController, CLLocationManagerDelegate {
@IBOutlet weak var Charge: UILabel!
@IBOutlet weak var resultsField: UILabel!
var chargingVar = ""
var batteryLevel: Float {
return UIDevice.current.batteryLevel
}
func batteryStatus() {
UIDevice.current.isBatteryMonitoringEnabled = true
batteryStateChanged()
switch UIDevice.current.batteryState {
case .unknown:
self.Charge.text = "BATTERY: UNKNOWN!"
case .charging:
self.Charge.text = "Charging..."
case .full:
self.Charge.text = "BATTERY full"
case .unplugged:
self.Charge.text = "unplugged"
default:
self.Charge.text = "nope"
}
}
func batteryStateChanged(){
if (UIDevice.current.batteryState == .charging) { UIApplication.shared.isIdleTimerDisabled = true
self.chargingVar = "is charging. \u{1F603}"
chargingAlaer()
}else{
self.chargingVar = "is not charging. \u{1F622} "
chargingAlaer()
}
}
func chargingAlaer(){
let alertController = UIAlertController(title: "Charging Status",
message: "Your device \(chargingVar)",
preferredStyle: UIAlertController.Style.alert)
let ok = UIAlertAction(title: "OK",
style: UIAlertAction.Style.default,
handler: {(action) -> Void in
})
alertController.addAction(ok)
self.present(alertController, animated: true, completion: nil)
}
@objc func displayBatteryCharge() {
self.resultsField.text = "\(batteryLevel * 100)%"
}
override func viewDidLoad() {
super.viewDidLoad()
UIDevice.current.isBatteryMonitoringEnabled = true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func viewDidAppear(_ animated: Bool) {
displayBatteryCharge()
batteryStatus()
}
}
基本上你所做的一切都是为了显示当前状态,现在你需要添加一些被通知的东西,或者定期检查所说的状态。
在这种情况下,我认为最好的方法是注册到 batteryStateDidChangeNotification
通知,只有当 isBatteryMonitoringEnabled
设置为 true 时系统才会发送该通知,就像您在 viewDidLoad
中所做的那样
我想加入
NotificationCenter.default.addObserver(
self,
selector: #selector(batteryStatus),
name: UIDevice.batteryStateDidChangeNotification,
object: nil
)
应该可以解决问题。例如在 viewDidLoad
中。