2008-12-01 19 views

Respuesta

24
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 is uilabel.

+4

, vale la pena señalar que las notificaciones asociadas 'UIDeviceBatteryLevelDidChangeNotification' y' UIDeviceBatteryStateDidChangeNotification' no se envían si su aplicación se está ejecutando en segundo plano – yano

+0

¿cuál es el estado de la batería aquí? –

+0

@Codecracker batteryLevel es un valor flotante que varía de 0.0 a 1.0 y batteryState es un tipo de código que indica que el dispositivo está cargado, en la carga, etc. –

3

Iphone SDK 3.0 beta es compatible con esto.

+0

A pesar de que la información podría ser cubierto por el NDA ... –

+0

... y, de nuevo, que podría haber sido anunciado por Apple en un foro público. –

-2

Ahora que está lanzado el 3.1 SDK, busque la sección Obtener el estado de la batería del dispositivo en la documentación de UIDevice. Es un abundo de las propiedades de la batería *.

0

Esto es lo que utilicé para mi cadena como método de utilidad rápida, tenga en cuenta que debe habilitar el monitoreo de la batería para obtener un valor y luego, si no desea obtener las notificaciones (obviamente se logrará cierta eficiencia) , ya que le dan la capacidad para apagarlo), entonces usted debe apagarlo de nuevo después (como yo en esta función):

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

las respuestas anteriores son muy buenos, pero todos ellos están en obj- C, los he usado con otros ejemplos para hacer la misma tarea en MonoTouch, así que coloco mi código aquí en caso de que alguien lo necesite:

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

también tengo un post completo en mi blog para dar todos los detalles en here

Cuestiones relacionadas