我想录制音频并将其保存在文件中。这是使用的代码:
QAudioEncoderSettings audioSettings;
audioSettings.setCodec("audio/pcm");
audioSettings.setQuality(QMultimedia::HighQuality);
audioRecorder.setEncodingSettings(audioSettings);
dir = QStandardPaths::standardLocations(QStandardPaths::HomeLocation).value(0);
QString qdir = dir.path();
qdir.append(QString("/test.wav"));
audioRecorder.setOutputLocation(QUrl::fromLocalFile(qdir));
audioRecorder.record();
这在 Windows 上工作得很好。我可以毫无问题地录制、保存和播放声音。一旦我在 android 上尝试此代码,我就会得到:
D MediaRecorder:getMaxAllowedFileSizeByPath
D MediaRecorder:找不到匹配的存储卷!
我设置了所需的存储和记录权限。我尝试运行代码的手机是 HTC one M8(Anroid 6.0 版)
我试图手动创建一个文件,但这也不起作用。
QDir folder = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
QString qdir = folder.path();
qdir.append(QString("/transmission.wav"));
QFile file(qdir);
if (file.exists())
file.remove();
qDebug() << "file exists: " << file.exists();
if (!file.exists()) {
if (!folder.exists()) {
folder.mkpath(folder.path());
}
file.open(QIODevice::WriteOnly);
file.write("Hello World");
file.close();
}
if (file.exists()) {
qDebug() << "file exists: " << file.exists();
file.open(QIODevice::ReadOnly);
QByteArray data=file.readAll();
qWarning("file data=%s",data.constData());
file.close();
}
QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation) 回馈:storage/0/emulated/Documents
file.open(QIODevice::ReadOnly) 回馈 QIODevice::write (QFile, "/storage/emulated/0/Documents/transmission.wav"): 设备未打开
看起来录音机无法创建文件 - 我也不能。