J'utilise cette fonction pour obtenir le niveau de batterie actuel de l'appareil:
[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
UIDevice *myDevice = [UIDevice currentDevice];
[myDevice setBatteryMonitoringEnabled:YES];
double batLeft = (float)[myDevice batteryLevel];
NSLog(@"%f",batLeft);
mais le résultat a une granularité de 5%. Exemple: lorsque la batterie du téléphone est à 88%, il enregistre uniquement une valeur de 0,85. batteryLevel
ne renvoie que les valeurs par incréments de 0,05. Par exemple: 0.85, 0.9, 0.95 et ne renvoie jamais de valeurs telles que 0.82 ou 0.83.
Existe-t-il une solution pour obtenir un pourcentage avec une précision supérieure?
consultez ce site: Lecture programmée du niveau de la batterie
mais, utilisez soigneusement. toutes les API utilisées ici ne sont pas documentées sur l'iPhone et entraîneront probablement un rejet si vous soumettez cette application à l'App Store. Bien que l'état de charge de la batterie ne soit pas tout à fait exact, je vous recommande d'utiliser les méthodes de surveillance de la batterie UIDevice.
Il existe au moins quatre façons différentes de lire le niveau de la batterie et ces quatre méthodes peuvent renvoyer des valeurs différentes.
Voici un tableau de ces valeurs à travers le temps.
Les valeurs ont été enregistrées avec ce projet iOS: https://github.com/nst/BatteryChart
S'il vous plaît vérifier le code pour référence.
UIDevice *myDevice = [UIDevice currentDevice];
[myDevice setBatteryMonitoringEnabled:YES];
double batLeft = (float)[myDevice batteryLevel] * 100;
NSLog(@"%.f", batLeft);
NSString * levelLabel = [NSString stringWithFormat:@"%.f%%", batLeft];
lblLevel.text = levelLabel;
Les réponses ci-dessus sont très bonnes, mais elles sont toutes dans Obj-C. J'ai utilisé ces exemples avec d'autres exemples pour effectuer la même tâche sur MonoTouch
. Je mets donc 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 dans ici
Swift version pour obtenir le niveau de batterie:
UIDevice.current.isBatteryMonitoringEnabled = true
let batteryLevel = UIDevice.current.batteryLevel
batteryLevel
return 0,39; 0,40 valeurs pour moi.