2015-06-11 10 views
5

Jestem obecnie tworzeniem aplikacji przy użyciu qt kierowania tabletkę Ubuntu 14.04Reading Stan baterii na Linux/Ubuntu przy użyciu QT

Ponieważ istnieje tylko biedny wskaźnik baterii w urządzeniu, a aplikacja będzie działać w trybie pełnoekranowym na dłuższy czas , chcę pokazać wskaźnik baterii wewnątrz aplikacji. Wyszukiwarka znalazła głównie stare wyniki lub połączenia z Windows, Androidem lub ios apis.

Czy istnieje sposób użycia tylko Qt apis lub inny wygodny sposób, aby uzyskać informacje na temat stanu baterii?

+0

można spojrzeć jak to zostało wdrożone w Qt Mobility: https://github.com/enthought/qt-mobility/blob/master/src/systeminfo/qsystembatteryinfo.cpp – danielfranca

+0

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

+0

spróbuj http://askubuntu.com/questions/324222/how-to-check-battery-status-with-tubububu-sdk – nkcode

Odpowiedz

0

Mimo że odpowiedź użytkownika vahanchos była dla mnie pomocna i prawdopodobnie jest to droga dla innych, skończyło się na innym rozwiązaniu.

W moim przypadku koduję tylko jeden typ urządzenia specjalnego i znany zestaw maszyn programistycznych. dlatego mogłem po prostu przeczytać odpowiednie pliki w sys/class/power_supply/. Nie mogę zagwarantować, że inne urządzenia będą wymieniać swoje pliki dokładnie tak samo. Ale może warto spróbować.

#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

Nawet jeśli nie ma takiego API w Qt, można znaleźć narzędzie wiersza poleceń (na przykład upower), które zwraca szczegóły stanu baterii i wykonać je z aplikacji Qt pod numerem QProcess. Po zakończeniu pracy narzędzia można odczytać jego standardowe wyniki i przeanalizować je, aby znaleźć wszystkie niezbędne informacje.

Dla narzędzi wiersza poleceń związanych z baterią w Ubuntu można znaleźć na przykład: this page.

Powiązane problemy