mirror of
https://github.com/FBukovina/Atoll.git
synced 2026-10-27 15:14:33 +00:00
Working Low Battery Indicator
This commit is contained in:
parent
f9e95fc26e
commit
e6d9043c37
3 changed files with 27 additions and 0 deletions
|
|
@ -11,6 +11,8 @@ class BatteryStatusViewModel: ObservableObject {
|
|||
private var powerSourceChangedCallback: IOPowerSourceCallbackType?
|
||||
private var runLoopSource: Unmanaged<CFRunLoopSource>?
|
||||
var animations: DynamicIslandAnimations = DynamicIslandAnimations()
|
||||
private let lowBatteryAlertSoundPlayer = AudioPlayer()
|
||||
private let lowBatteryAlertThresholds: [Float] = [20, 15, 10, 5]
|
||||
|
||||
@ObservedObject var coordinator = DynamicIslandViewCoordinator.shared
|
||||
|
||||
|
|
@ -63,6 +65,8 @@ class BatteryStatusViewModel: ObservableObject {
|
|||
|
||||
case .batteryLevelChanged(let level):
|
||||
print("🔋 Battery level: \(Int(level))%")
|
||||
let previousLevel = self.levelBattery
|
||||
self.handleLowBatteryAlertIfNeeded(previousLevel: previousLevel, newLevel: level)
|
||||
withAnimation {
|
||||
self.levelBattery = level
|
||||
}
|
||||
|
|
@ -128,6 +132,25 @@ class BatteryStatusViewModel: ObservableObject {
|
|||
}
|
||||
}
|
||||
|
||||
private func handleLowBatteryAlertIfNeeded(previousLevel: Float, newLevel: Float) {
|
||||
guard Defaults[.playLowBatteryAlertSound] else { return }
|
||||
guard !isPluggedIn, !isCharging else { return }
|
||||
guard newLevel < previousLevel else { return }
|
||||
|
||||
for threshold in lowBatteryAlertThresholds {
|
||||
if previousLevel >= threshold && newLevel < threshold {
|
||||
self.statusText = "Low battery"
|
||||
notifyImportanChangeStatus()
|
||||
playLowBatteryAlertSound()
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func playLowBatteryAlertSound() {
|
||||
lowBatteryAlertSoundPlayer.play(fileName: "lowbattery", fileExtension: "mp3")
|
||||
}
|
||||
|
||||
deinit {
|
||||
print("🔌 Cleaning up battery monitoring...")
|
||||
if let managerBatteryId: Int = managerBatteryId {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue