【发布时间】:2023-05-20 01:22:01
【问题描述】:
我正在开发一个 Qt 应用程序,其中包含以下用于播放声音的代码块
QString soundApp = "/usr/bin/aplay";
QStringList soundFile;
soundFile << "/home/pi/urna-files/sources/som-longo.wav";
QProcess *playSound = new QProcess;
playSound->start(soundApp, soundFile);
从命令行运行应用时声音播放正常。
当我在启动后使用 systemd 和 unit file 启动应用程序时,QProcess 不播放音频。
[Unit]
Description=Voting Machine Launch Service
[Service]
ExecStart=/home/pi/urna
Restart=always
[Install]
WantedBy=multi-user.target
我应该怎么做才能让它工作?单元文件中还有什么要添加的吗?或 QProcess 的任何其他参数?
【问题讨论】:
-
当你说它在从命令行运行时播放声音时,你是否切换到用户,该进程将在通过 systemd 启动时运行? IE。如果您使用普通用户帐户启动它,那么它的行为可能与作为非登录用户运行时不同
-
我认为这个问题很可能是''
aplaygives no output when run by systemd" - 我会检查您是否可以在将手指指向QProcess之前从systemd成功运行aplay. -
顺便说一句,这么简单的应用程序不需要Qt。你可以为它写一个简单的 bash 脚本。
-
感谢您的洞察力!在 [Service] 下添加“User=pi”有效。现在声音播放正常。 @KevinKrammer 你想写下答案以便我接受吗?
-
@HiI'mFrogatto 这只是另一个应用程序的代码块。我正在为学校开发一台投票机,让孩子们可以体验投票。机器播放声音只是其中的一部分。
标签: linux qt shell systemd qprocess