Mohammad reza Kashi
Mohammad reza Kashi

Reputation: 369

Qaudioinput has a runtime error in android

enter image description hereI have developed an application to record voice with Qt. it works correctly in a Linux environment but it gives me a run-time error in Android when I start recording. I have debugged my code and I think it is because of QAudioInput library. I attached my error image.enter image description here

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();
    }
}

Upvotes: 0

Views: 170

Answers (1)

Soheil Armin
Soheil Armin

Reputation: 2795

You will need run-time access request for this Android version (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
    }

You can launch it whenever your application starts.

Upvotes: 1

Related Questions