Qaudioinput 在 android 中出现运行时错误
Qaudioinput has a runtime error in android
我用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();
}
}
您将需要 运行 次访问此 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
}
您可以在应用程序启动时启动它。
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();
}
}
您将需要 运行 次访问此 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
}
您可以在应用程序启动时启动它。