我目前正在开发一个使用qt定位运行ubuntu 14.04的平板电脑的应用程序
由于设备上只有一个电池指示灯不足,应用程序将长时间全屏运行,我想在应用程序内显示一个电池指示灯。搜索主要是旧结果或调用windows,android或ios apis。
有没有办法只使用Qt api或其他舒适的方式来获取有关电池状态的信息?
答案 0 :(得分:2)
即使Qt中没有这样的API,您也可以找到一个命令行实用程序(例如upower
),它返回电池状态详细信息并使用QProcess
从Qt应用程序执行它。实用程序完成工作后,您可以读取其标准输出并解析它以查找所有必要的信息。
对于Ubuntu中与电池相关的命令行工具,您可以参考,例如this page。
答案 1 :(得分:1)
尽管用户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);
}