audiorecorderdialog.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #include "audiorecorderdialog.h"
  2. #include "ui_audiorecorderdialog.h"
  3. AudioRecorderDialog::AudioRecorderDialog(QWidget* parent) :
  4. QDialog(parent),
  5. ui(new Ui::AudioRecorderDialog)
  6. {
  7. ui->setupUi(this);
  8. m_recorder = new QAudioRecorder(this);
  9. ui->cbbDev->addItems(m_recorder->audioInputs());
  10. m_tmr = new QTimer(this);
  11. connect(m_tmr, &QTimer::timeout, this, &AudioRecorderDialog::onTimeOut);
  12. m_start = 0;
  13. QDateTime d = QDateTime::currentDateTime();
  14. m_fileName = QApplication::applicationDirPath() + "/data/audios/" + d.toString("yyyyMMddhhmmss");
  15. m_path = m_fileName + ".wav";
  16. }
  17. AudioRecorderDialog::~AudioRecorderDialog()
  18. {
  19. delete ui;
  20. }
  21. bool showAudioRecorderDialog(QString& path)
  22. {
  23. AudioRecorderDialog* dlg = new AudioRecorderDialog();
  24. bool f;
  25. int ret = dlg->exec();
  26. if (ret == QDialog::Accepted)
  27. {
  28. f = true;
  29. path = dlg->path();
  30. }
  31. else
  32. {
  33. f = false;
  34. path = "";
  35. }
  36. delete dlg;
  37. return f;
  38. }
  39. void AudioRecorderDialog::on_btnOk_clicked()
  40. {
  41. if (ui->btnOk->text() == "开始录制")
  42. {
  43. QAudioEncoderSettings audioSettings;
  44. qDebug() << audioSettings.codec();
  45. audioSettings.setCodec("audio/amr");
  46. audioSettings.setQuality(QMultimedia::HighQuality);
  47. m_recorder->setAudioInput(ui->cbbDev->currentText());
  48. m_recorder->setEncodingSettings(audioSettings);
  49. m_recorder->setOutputLocation(QUrl::fromLocalFile(m_fileName));
  50. m_recorder->record();
  51. m_tmr->start(1000);
  52. ui->btnOk->setText("停止录制");
  53. }
  54. else
  55. {
  56. m_recorder->stop();
  57. accept();
  58. }
  59. }
  60. void AudioRecorderDialog::on_btnCancel_clicked(bool checked)
  61. {
  62. m_recorder->stop();
  63. reject();
  64. }
  65. void AudioRecorderDialog::onTimeOut()
  66. {
  67. m_start++;
  68. ui->lblTime->setText(secondToString(m_start));
  69. }
  70. QString AudioRecorderDialog::path() const
  71. {
  72. return m_path;
  73. }
  74. void AudioRecorderDialog::setPath(const QString& path)
  75. {
  76. m_path = path;
  77. }