1

在此处输入图像描述我开发了一个使用 Qt 录制语音的应用程序。它在 Linux 环境中正常工作,但是当我开始录制时,它在 Android 中给我一个运行时错误。我已经调试了我的代码,我认为这是因为QAudioInput库。我附上了我的错误图片。在此处输入图像描述

QBuffer m_buffer;
m_buffer.open(QBuffer::ReadWrite);


void Recorder::toggleRecord(QString state)
{
    if(state == "1")
    {
        m_buffer.open(QBuffer::ReadWrite);
        m_audioInput->start(&m_buffer);
        QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice();
        if (!info.isFormatSupported(m_format)) {
            qWarning() << "Default format not supported, trying to use the nearest.";
            m_format = info.nearestFormat(m_format);
        }
    }
    if(state == "0")
    {
        m_buffer.close();
        m_audioInput->stop();
    }
}
4

1 回答 1

1

您将需要此 Android 版本 (8) 的运行时访问请求。

  auto  result = QtAndroid::checkPermission(QString("android.permission.RECORD_AUDIO"));
    if(result == QtAndroid::PermissionResult::Denied){
        QtAndroid::PermissionResultMap resultHash = QtAndroid::requestPermissionsSync(QStringList({"android.permission.RECORD_AUDIO"}));
        if(resultHash["android.permission.CAMERA"] == QtAndroid::PermissionResult::Denied)
            // do whatever needed if denied
         else
            // do whatever needed if granted
    }

您可以在应用程序启动时启动它。

于 2019-12-31T11:43:51.483 回答