public BatteryData GetCurrentState() { BatteryReport report = Battery.AggregateBattery.GetReport(); BatteryData data = new BatteryData(); data.BatteryLife = report.BatteryLevelInPercentage(); data.BatteryLifeTime = report.EstimateTimeToDischarge(); switch (report.Status) { case Windows.System.Power.BatteryStatus.NotPresent: data.BatteryState = BatteryState.NotPresent; break; case Windows.System.Power.BatteryStatus.Discharging: data.BatteryState = BatteryState.Discharging; break; case Windows.System.Power.BatteryStatus.Charging: data.BatteryState = BatteryState.Charging; break; default: data.BatteryState = BatteryState.Unknown; break; } if (lastBatteryData == null || data.BatteryLife != lastBatteryData.BatteryLife || data.BatteryLifeTime != lastBatteryData.BatteryLifeTime || data.BatteryState != lastBatteryData.BatteryState) { BatteryStateChanged?.Invoke(this, new BatteryStateChangedEventArgs(data)); } lastBatteryData = data; return data; }
public BatteryData GetCurrentState() { if (battery == null) { battery = Battery.GetDefault(); } BatteryData data = new BatteryData(); data.BatteryLife = battery.RemainingChargePercent; TimeSpan dischargeTime = battery.RemainingDischargeTime; if (dischargeTime.Days < 1000) { data.BatteryLifeTime = battery.RemainingDischargeTime; data.BatteryState = BatteryState.Discharging; } else { // High discharge time means phone is charging. data.BatteryState = BatteryState.Charging; } // Notify only when values changes. GetCurrentState can be called manually. if (lastBatteryData == null || data.BatteryLife != lastBatteryData.BatteryLife || data.BatteryLifeTime != lastBatteryData.BatteryLifeTime || data.BatteryState != lastBatteryData.BatteryState) { BatteryStateChanged?.Invoke(this, new BatteryStateChangedEventArgs(data)); } lastBatteryData = data; return data; }
public BatteryData GetCurrentState() { var status = BatteryNativeUtils.GetStatus(); BatteryData data = new BatteryData(); data.BatteryLife = status.BatteryLifePercent; if (status.BatteryLifeTime > 0) { data.BatteryLifeTime = TimeSpan.FromSeconds(status.BatteryLifeTime); } if ((status.BatteryFlag & BatteryNativeUtils.BatteryFlag.Charging) > 0) { data.BatteryState = BatteryState.Charging; } else if ((status.BatteryFlag & BatteryNativeUtils.BatteryFlag.NoSystemBattery) > 0) { data.BatteryState = BatteryState.NotPresent; } else if (status.BatteryFlag != BatteryNativeUtils.BatteryFlag.Unknown) { data.BatteryState = BatteryState.Discharging; } else { data.BatteryState = BatteryState.Unknown; } if (lastBatteryData == null || data.BatteryLife != lastBatteryData.BatteryLife || data.BatteryLifeTime != lastBatteryData.BatteryLifeTime || data.BatteryState != lastBatteryData.BatteryState) { BatteryStateChanged?.Invoke(this, new BatteryStateChangedEventArgs(data)); } lastBatteryData = data; return data; }
public BatteryStateChangedEventArgs(BatteryData data) { Data = data; }
private void UpdateBattery(BatteryData data) { BatteryLife.Text = (data.BatteryLife.HasValue ? data.BatteryLife.Value.ToString() : "-") + " %"; BatteryLifeTime.Text = data.BatteryLifeTime.HasValue ? data.BatteryLifeTime.Value.ToString() : "-"; BatteryStatus.Text = data.BatteryState.ToString(); }