11 votes

Mac - Obtenir l'état de la batterie/de la charge (branché ou non)

Je suis en train de créer une application Mac OSX qui doit interroger un serveur toutes les minutes, ou même moins si l'utilisateur le souhaite. Malheureusement le service ne supporte pas le push...

Quoi qu'il en soit, je voudrais offrir deux options à l'utilisateur :

  1. Intervalle d'interrogation sur la batterie Interrogation
  2. intervalle pendant la charge

Comment puis-je obtenir l'état du chargeur en Objective C ? Je ne me soucie pas vraiment du pourcentage réel, seulement de savoir si l'ordinateur portable est branché ou non. Évidemment, cela n'a pas d'importance pour les ordinateurs de bureau, donc j'espère qu'il existe une solution qui fonctionne pour les ordinateurs portables et de bureau.

16voto

Ole Begemann Points 85798

Jetez un coup d'œil à la IOPowerSources API.

Premier appel IOPSCopyPowerSourcesInfo() entonces IOPSCopyPowerSourcesList() pour obtenir une liste de toutes les sources d'alimentation disponibles. IOPSGetPowerSourceDescription() retournera un dictionnaire contenant des informations sur une source d'alimentation particulière. Selon la documentation, la clé kIOPSPowerSourceStateKey décrit "la source d'énergie actuelle". kIOPSBatteryPowerValue indique que la source d'alimentation tire de l'énergie interne ; kIOPSACPowerValue indique que la source d'alimentation est connectée à une source d'alimentation externe."

Vous pouvez également configurer une notification lorsque les sources d'alimentation changent avec IOPSNotificationCreateRunLoopSource() .

(NB : Je n'ai pas testé tout cela, j'ai juste regardé la documentation).

8voto

Bien que cette question ait déjà une réponse acceptée qui m'a conduit à ma solution, il était pénible de cliquer sur des tas et des tas de liens brisés.

Voici ma solution :

  1. Ajouter IOKit.framework
  2. Importation #import <IOKit/ps/IOPowerSources.h>
  3. Code :

    CFTimeInterval timeRemaining = IOPSGetTimeRemainingEstimate();
    
    if (timeRemaining == kIOPSTimeRemainingUnlimited) {
            // connected to outlet
    } else if (timeRemaining == kIOPSTimeRemainingUnknown){
            // time remaining unknown (recently unplugged)
    } else if ((timeRemaining / 60) < 30){
            // less than 30 minutes remaining
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X