问题:
1。 QAudioDeviceInfo :: availableDevices(QAudio :: AudioOutput))仅从三个音频输出设备返回一个音频设备(默认设备)。为什么? 共有三个音频输出设备可用,在使用ALSA设备进行检查时,使用" tinyplay"通过命令行实用。 但是QAudioDeviceInfo :: availableDevices()并没有返回这三个设备,它只返回一个设备(默认)。
注意: 使用qt样本上的示例代码进行audiooutput。只返回一台设备。
m_deviceBox->addItem(defaultDeviceInfo.deviceName(), qVariantFromValue(defaultDeviceInfo));
foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)) {
if (deviceInfo != defaultDeviceInfo) {
m_deviceBox->addItem(deviceInfo.deviceName(), qVariantFromValue(deviceInfo));
}
}
2。如何将特定的ALSA设备(例如:card0,设备0)设置为默认音频设备? 在这种情况下,QAudioDeviceInfo :: defaultOutputDevice()在声卡2上设置为设备0。
详情请见下文........
系统设置:
目标董事会:iMX6Q Sabre AI
操作系统:Android M6
Qt:QT 5.8
Android NDK r10
Android SDK:25.2.5
可用的声卡:
root @ sabreauto_6q:/ #cat / proc / asound / cards
0 [cs42888audio]:cs42888-audio - cs42888-audio CS42888音频 1 [imxspdif]:imx-spdif - imx-spdif IMX-SPDIF 2 [imxhdmisoc]:imx-hdmi-soc - imx-hdmi-soc IMX-HDMI-SOC
可用的声音设备:
root @ sabreauto_6q:/ #cat / proc / asound / card0 / id pcm0c / pcm0p / pcm1c / pcm1p /
root @ sabreauto_6q:/ #cat / proc / asound / card1 / id pcm0c /
root @ sabreauto_6q:/ #cat / proc / asound / card2 / id pcm0p /
注意:共有3个声卡和3个音频(ALSA)输出设备。
尝试测试音频输出设备:
使用tinyplay实用程序声音验证整个音频输出驱动程序。
tinyplay test.wav -D 0 -d 0 - >声音验证。 注意:声卡0上的ALSA设备0正在运行以产生声音。
tinyplay test.wav -D 0 -d 1 - >声音验证。
tinyplay test.wav -D 2 -d 0 - >声音验证。