2008-12-01 4 views

Répondre

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 est uilabel.

+4

Notez que les notifications associées 'UIDeviceBatteryLevelDidChangeNotification' et' UIDeviceBatteryStateDidChangeNotification' ne sont pas envoyées si votre application s'exécute en arrière-plan – yano

+0

quel est l'état de la batterie ici? –

+0

@Codecracker batteryLevel est une valeur flottante allant de 0.0 à 1.0 et batteryState est une sorte de code qui indique que l'appareil est chargé, en charge, etc. –

3

Iphone SDK 3.0 beta prend en charge cette fonctionnalité.

+0

Bien que l'information pourrait être couvert par la NDA ... –

+0

... et là encore, il aurait pu être annoncé par Apple dans un forum public. –

-2

Maintenant que le SDK 3.1 est publié, recherchez la section Obtenir l'état de la batterie du périphérique dans la documentation de UIDevice. C'est abunch des propriétés de la batterie *.

0

Voici ce que j'ai utilisé pour ma chaîne en tant que méthode utilitaire rapide, notez que vous devez activer la surveillance de la batterie pour obtenir une valeur, et si vous ne voulez pas recevoir les notifications , car ils vous donnent la possibilité de le désactiver), vous devez éteindre à nouveau après (comme je le fais dans cette fonction):

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

les réponses ci-dessus sont très bons, mais ils sont tous dans obj- C, j'ai utilisé ceux-ci avec d'autres exemples pour faire la même tâche sur MonoTouch, donc je mets mon code ici au cas où quelqu'un en aurait besoin:

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

J'ai aussi un article complet sur mon blog pour donner tous les détails here

Questions connexes