예제 #1
0
        internal BatteryState()
        {
            PowerManagementNativeMethods.SystemBatteryState battState = Power.GetSystemBatteryState();
            acOnline      = battState.AcOnLine;
            maxCharge     = (int)battState.MaxCapacity;
            currentCharge = (int)battState.RemainingCapacity;
            dischargeRate = (int)battState.Rate;
            long estimatedTime = (long)battState.EstimatedTime;
            int  minutes       = (int)(estimatedTime / 60);
            int  seconds       = (int)(estimatedTime % 60);

            estimatedTimeRemaining         = new TimeSpan(0, minutes, seconds);
            suggestedCriticalBatteryCharge = (int)battState.DefaultAlert1;
            suggestedBatteryWarningCharge  = (int)battState.DefaultAlert2;
        }
        internal BatteryState()
        {
            PowerManagementNativeMethods.SystemBatteryState state = Power.GetSystemBatteryState();

            if (!state.BatteryPresent)
            {
                throw new InvalidOperationException(LocalizedMessages.PowerManagerBatteryNotPresent);
            }

            ACOnline      = state.AcOnLine;
            MaxCharge     = (int)state.MaxCapacity;
            CurrentCharge = (int)state.RemainingCapacity;
            ChargeRate    = (int)state.Rate;

            uint estimatedTime = state.EstimatedTime;

            EstimatedTimeRemaining = estimatedTime != uint.MaxValue ? new TimeSpan(0, 0, (int)estimatedTime) : TimeSpan.MaxValue;

            SuggestedCriticalBatteryCharge = (int)state.DefaultAlert1;
            SuggestedBatteryWarningCharge  = (int)state.DefaultAlert2;
        }