gpt4 book ai didi

ios - iOS 上的 UIDevice Battery State 在电池状态更改时不会更新

转载 作者:行者123 更新时间:2023-12-01 19:48:30 25 4
gpt4 key购买 nike

在我的 Codename One 应用程序中,我使用以下 iOS 本地代码来了解电池是否正在充电或充满:

-(BOOL)isCharging{
[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];

if ( ([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateCharging)
|| ([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateFull) ) {
return YES;
}
else {
return NO;
}
}

I 代号 如果电池正在充电,我每 1000 毫秒轮询一次。它在 Android 上完美运行。然而,在 iOS 上,初始状态(即应用程序启动时)保持不变,即使电池状态发生变化(插入/拔出,反之亦然)也不会更新。

因此,如果我在插入电缆的情况下启动应用程序 isCharging返回 YES (在 Java 中为真)但如果我拔下电缆 isCharging不断返回 YES .如果我关闭应用程序并使用拔下的电缆启动它, isCharging返回 NO并且永远不会去 YES当我插入电缆时,尽管左上角的 iOS 工具栏显示正在充电的电池。

请注意:测试是在 iPhone 4 上进行的

当电池状态发生变化时,我该怎么做才能使该方法更新其值?

任何帮助表示赞赏,

最佳答案

在 iOS 中,您订阅系统通知。我把我的放在我的应用程序委托(delegate)中。

    func applicationDidBecomeActive(_ application: UIApplication) {
NotificationCenter.default.addObserver(self, selector: #selector(AppDelegate.batteryChangeLevel), name: NSNotification.Name.UIDeviceBatteryLevelDidChange, object: UIDevice.current)
NotificationCenter.default.addObserver(self, selector: #selector(AppDelegate.batteryChangeState), name: NSNotification.Name.UIDeviceBatteryStateDidChange, object: UIDevice.current)
}

从那里您可以检查状态是否做出相应 react 。
UIDevice.current.batteryLevel
UIDevice.current.batteryState

IIRC,它会在每次电源更改百分比以及设备更改插入电源时发送通知。

请务必取消订阅:
func applicationWillResignActive(_ application: UIApplication) {

// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.

NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIDeviceBatteryLevelDidChange, object: nil)

NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIDeviceBatteryStateDidChange, object: nil)

}

关于ios - iOS 上的 UIDevice Battery State 在电池状态更改时不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47084884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com