0

我想录制音频并将其保存在文件中。这是使用的代码:

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"): 设备未打开

看起来录音机无法创建文件 - 我也不能。

4

0 回答 0