我正在使用Qt开发一个应用程序,目标设备是运行Ubuntu 14.04的平板电脑。
由于设备上只有一个较差的电池指示器,并且应用程序将全屏运行很长时间,我想在应用程序内显示电池指示器。搜索发现主要是旧的结果或调用Windows、Android或iOS的API。
是否有仅使用Qt API或其他方便的方式来获取有关电池状态的信息的方法?
我正在使用Qt开发一个应用程序,目标设备是运行Ubuntu 14.04的平板电脑。
由于设备上只有一个较差的电池指示器,并且应用程序将全屏运行很长时间,我想在应用程序内显示电池指示器。搜索发现主要是旧的结果或调用Windows、Android或iOS的API。
是否有仅使用Qt API或其他方便的方式来获取有关电池状态的信息的方法?
upower
),它会返回电池状态详细信息,并使用QProcess
从Qt应用程序执行它。在实用程序完成工作后,您可以读取其标准输出并解析它以找到所有必要的信息。虽然用户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);
}