2015-06-11 11 views
5

Attualmente sto sviluppando un'applicazione utilizzando qt mira un tablet con sistema operativo Ubuntu 14.04Stato di lettura della batteria su Linux/Ubuntu utilizzando QT

Poiché non v'è solo un indicatore di batteria scarsa sul dispositivo e l'applicazione verrà eseguito a schermo intero per un tempo prolungato , voglio mostrare un indicatore della batteria all'interno dell'applicazione. Una ricerca ha trovato principalmente vecchi risultati o chiamate a Windows, Android o ios.

È possibile utilizzare solo l'API Qt o un altro modo comodo per ottenere informazioni sullo stato della batteria?

+0

Si può avere uno sguardo come è stato implementato in Qt Mobility: https://github.com/enthought/qt-mobility/blob/master/src/systeminfo/qsystembatteryinfo.cpp – danielfranca

+0

Vedere https: // forum.qt.io/topic/18874/qt-c-how-to-check-battery-level-laptop/4. – user1929959

+0

prova http://askubuntu.com/questions/324222/how-to-check-battery-status-with-the-ubuntu-sdk – nkcode

risposta

0

Anche se la risposta utente vahanchos è stata utile per me, e probabilmente è la strada da percorrere per gli altri, ho trovato una soluzione diversa.

Nel mio caso, codice per un solo tipo di dispositivo speciale e un gruppo noto di macchine di sviluppo. quindi ho potuto leggere i file rilevanti in sys/class/power_supply/. Non posso garantire che altri dispositivi chiamino i loro file esattamente nello stesso modo. Ma potrebbe valere la pena provare.

#include <QFile> 

void refreshValues(){ 
    QFile acLine("/sys/class/power_supply/AC/online"); 
    QFile acAdp("/sys/class/power_supply/ADP0/online"); 
    QFile bCap("/sys/class/power_supply/BAT0/capacity"); 
    bool ac = false; 
    int level = 0; 
    if(acLine.exists()){ 
     acLine.open(QIODevice::ReadOnly | QIODevice::Text); 
     if(QString(acLine.readAll()).toInt()){ 
      ac = true; 
     } 
     acLine.close(); 
    }else if(acAdp.exists()){ 
     acAdp.open(QIODevice::ReadOnly | QIODevice::Text); 
     if(QString(acAdp.readAll()).toInt()){ 
      ac = true; 
     } 
     acAdp.close(); 
    } 
    if(bCap.exists()){ 
     bCap.open(QIODevice::ReadOnly | QIODevice::Text); 
     level = QString(bCap.readAll()).toInt(); 
     bCap.close(); 
    } 
    setAcPowerActive(ac); 
    setBatteryLevel(level); 
} 
2

Anche se non esiste tale API in Qt, è possibile trovare un'utilità della riga di comando (ad esempio upower) che restituisce i dettagli sullo stato della batteria ed eseguirlo dall'applicazione Qt con QProcess. Dopo che l'utility ha terminato il lavoro, puoi leggere il suo output standard e analizzarlo per trovare tutte le informazioni necessarie.

Per gli strumenti da riga di comando relativi alle batterie in Ubuntu è possibile fare riferimento, ad esempio, a this page.

Problemi correlati