Как узнать состояние батареи? - PullRequest
16 голосов
/ 01 декабря 2008

Как узнать состояние батареи на iPhone?

Ответы [ 5 ]

24 голосов
/ 09 апреля 2010
UIDevice *myDevice = [UIDevice currentDevice];
[myDevice setBatteryMonitoringEnabled:YES];
float batLeft = [myDevice batteryLevel];
int i=[myDevice batteryState];

int batinfo=(batLeft*100);

NSLog(@"Battry Level is :%d and Battery Status is :%d",batinfo,i);

switch (i)
{
    case UIDeviceBatteryStateUnplugged:
    {
        [BCStatus setText:NSLocalizedString(@"UnpluggedKey", @"")];
        break;
    }
    case UIDeviceBatteryStateCharging:
    {
        [BCStatus setText:NSLocalizedString(@"ChargingKey", @"")];
        break;
    }
    case UIDeviceBatteryStateFull:
    {
        [BCStatus setText:NSLocalizedString(@"FullKey", @"")];
        break;
    }
    default:
    {
        [BCStatus setText:NSLocalizedString(@"UnknownKey", @"")];
        break;
    }
}

BCStatus является uilabel.

3 голосов
/ 01 апреля 2009

Iphone SDK 3.0 beta поддерживает это.

2 голосов
/ 20 января 2014

Ответы выше очень хороши, но все они в Obj-C, я использовал их с другими примерами, чтобы выполнить ту же задачу на MonoTouch, поэтому я помещаю свой код здесь на тот случай, если это кому-нибудь понадобится:

try
{
    UIDevice.CurrentDevice.BatteryMonitoringEnabled = true;
    _Battery.Level = (int)(UIDevice.CurrentDevice.BatteryLevel * IOSBatteryLevelScalingFactor);
    _Battery.State = UIDevice.CurrentDevice.BatteryState;
}
catch (Exception e)
{
    ExceptionHandler.HandleException(e, "BatteryState.Update");
    throw new BatteryUpdateException();
}
finally
{
    UIDevice.CurrentDevice.BatteryMonitoringEnabled = false;
}

У меня также есть полный пост в моем блоге, чтобы дать все детали в здесь

0 голосов
/ 04 октября 2012

Вот то, что я использовал для своей строки в качестве быстрого служебного метода, обратите внимание, что вам нужно включить мониторинг батареи, чтобы получить значение, а затем, если вы не хотите получать уведомления (очевидно, некоторая эффективность будет достигнута, так как они дают вам возможность выключить его), то вы должны выключить его снова после (как я делаю в этой функции):

NSString *statusString(void)
{
    UIDevice *device = [UIDevice currentDevice];
    NSString *batteryStateString = nil;
    switch(device.batteryState)
    {
        case UIDeviceBatteryStateUnplugged: batteryStateString = @"Unplugged"; break;
        case UIDeviceBatteryStateCharging: batteryStateString = @"Charging"; break;
        case UIDeviceBatteryStateFull: batteryStateString = @"Full"; break;
        default: batteryStateString = @"Unknown"; break;
    }

    [device setBatteryMonitoringEnabled:YES];
    NSString *statusString = [NSString stringWithFormat:@"Battery Level - %d%%, Battery State - %@",
                              (int)round(device.batteryLevel * 100), batteryStateString];
    [device setBatteryMonitoringEnabled:NO];
    return statusString;
}
0 голосов
/ 14 сентября 2009

Теперь, когда выпущен 3.1 SDK, ищите раздел Получение состояния батареи устройства в документации UIDevice. Это изобилие свойств батареи *.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...