@@ -46,9 +46,17 @@ AudioSource::AudioSource():
4646 for (int i = 0 ; i < size; ++i) {
4747 QString val = QJniObject (env->GetObjectArrayElement (devsArray, i)).toString ();
4848 qInfo () << val;
49+ int id = val.split (" :" )[0 ].toInt ();
50+ QString descr = val.split (" :" )[1 ];
51+ _audio_dev_descr.append (descr);
52+ _audio_dev_id.append (id);
53+ _audio_dev.append (QAudioDevice ());
4954 }
55+ _current_device = _audio_dev_descr[0 ];
5056 }
5157
58+ qInfo () << _audio_dev_descr;
59+
5260 const JNINativeMethod methods[] = {
5361 { " onAudioDataReceivedBase64" , " ([B)V" , (void *)onAudioDataReceivedBase64 }
5462 };
@@ -82,6 +90,8 @@ AudioSource::AudioSource():
8290
8391 initializeDevices ();
8492
93+ emit devicesChanged (_audio_dev_descr);
94+
8595 // initializeAudio(_audio_dev.last());
8696}
8797
@@ -90,7 +100,8 @@ void AudioSource::start()
90100 _buf.clear ();
91101 emit bytesAvailableChanged (0 );
92102 _active = true ;
93- initializeAudio (_audio_dev[_audio_dev_descr.indexOf (_current_device)]);
103+ int idx = _audio_dev_descr.indexOf (_current_device);
104+ initializeAudio (_audio_dev[idx], _audio_dev_id[idx]);
94105}
95106
96107void AudioSource::stop ()
@@ -145,12 +156,19 @@ void AudioSource::checkMicrophonePermissions()
145156
146157void AudioSource::initializeDevices ()
147158{
159+
160+ #ifdef ANDROID
161+ qInfo () << __func__ << " does nothing on android" ;
162+ return ;
163+ #endif
164+
148165 _audio_dev_descr.clear ();
149166 _audio_dev.clear ();
150167
151168 const QAudioDevice& defaultDeviceInfo = QMediaDevices::defaultAudioInput ();
152169 _audio_dev_descr.append (defaultDeviceInfo.description ());
153170 _audio_dev.append (defaultDeviceInfo);
171+ _audio_dev_id.append (defaultDeviceInfo.id ().toInt ());
154172
155173 for (auto & deviceInfo : _media_devices->audioInputs ())
156174 {
@@ -160,6 +178,7 @@ void AudioSource::initializeDevices()
160178 {
161179 _audio_dev_descr.append (deviceInfo.description ());
162180 _audio_dev.append (deviceInfo);
181+ _audio_dev_id.append (deviceInfo.id ().toInt ());
163182 }
164183 }
165184
@@ -187,7 +206,8 @@ qreal AudioSource::calculateLevel(const char *data, qint64 len) const
187206}
188207
189208#ifdef ANDROID
190- void AudioSource::initializeAudio (const QAudioDevice &deviceInfo)
209+ void AudioSource::initializeAudio (const QAudioDevice &deviceInfo,
210+ int id)
191211{
192212 _format.setSampleRate (16000 );
193213 _format.setChannelCount (1 );
@@ -211,10 +231,10 @@ void AudioSource::initializeAudio(const QAudioDevice &deviceInfo)
211231 QJniObject::callStaticMethod<void >(
212232 " it/iit/hhcm/xbot2_gui_client/AudioSource" ,
213233 " startSoundRecording" ,
214- deviceInfo. id (). toInt () );
234+ id );
215235}
216236#else
217- void AudioSource::initializeAudio (const QAudioDevice &deviceInfo)
237+ void AudioSource::initializeAudio (const QAudioDevice &deviceInfo, int id )
218238{
219239 _format.setSampleRate (16000 );
220240 _format.setChannelCount (1 );
0 commit comments