使用QT在Linux/Ubuntu上读取电池状态

And*_*kes 5 c++ linux ubuntu qt battery

我目前正在开发一个使用qt定位运行ubuntu 14.04的平板电脑的应用程序

由于设备上只有较差的电池指示灯,并且应用程序将长时间全屏运行,我想在应用程序内显示电池指示灯.搜索主要是旧结果或调用windows,android或ios apis.

有没有办法只使用Qt apis或其他舒适的方式来获取有关电池状态的信息?

And*_*kes 2

尽管用户 vahanchos 的回答对我有帮助,并且可能是其他人的方法,但我最终得到了不同的解决方案。

就我而言,我仅针对一种特殊设备类型和一组已知的开发机器进行编码。因此我可以只阅读 中的相关文件sys/class/power_supply/。我不能保证其他设备会以完全相同的方式命名其文件。但这可能值得一试。

#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);
}
Run Code Online (Sandbox Code Playgroud)