Подтвердить что ты не робот

Как получить статус батареи?

Как получить статус батареи на iPhone?

4b9b3361

Ответ 1

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.

Ответ 2

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

Ответ 3

Ответы выше, очень хорошие, но все они в 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;
}

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

Ответ 4

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

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;
}

Ответ 5

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