问题:
1. QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)) 从三个音频输出设备中只返回一个音频设备(默认设备)。为什么? 共有三个音频输出设备可用,在使用 ALSA 设备检查时,通过命令行使用“tinyplay”实用程序验证了输出。但是 QAudioDeviceInfo::availableDevices() 不返回这三个设备,它只返回一个设备(默认)。
注意: 使用 qt 示例中的示例代码进行音频输出。仅返回一台设备。
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, device 0)设置为默认音频设备? 在这种情况下,QAudioDeviceInfo::defaultOutputDevice() 设置为声卡 2 上的设备 0。
请参阅下面的详细资料........
系统设置:
目标板:iMX6Q Sabre AI
操作系统:安卓M6
Qt:QT 5.8
安卓 NDK r10
安卓 SDK:25.2.5
可用声卡:
root@sabreauto_6q:/ # cat /proc/asound/cards
0 [cs42888audio]:cs42888-audio-cs42888-audio cs42888-audio 1 [imxspdif]:imx-spdif-imx-spdif imx-spdif 2 [imxhdmisoc]:imx-hdmi-soc-imx-hdmi-soc imx-hdmi-社会
可用的声音设备:
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 --> 声音已验证。