diff --git a/src/plugins/coreaudio/coreaudiodeviceinfo.mm b/src/plugins/coreaudio/coreaudiodeviceinfo.mm index bb1f046a..74a692c1 100644 --- a/src/plugins/coreaudio/coreaudiodeviceinfo.mm +++ b/src/plugins/coreaudio/coreaudiodeviceinfo.mm @@ -61,6 +61,11 @@ CoreAudioDeviceInfo::CoreAudioDeviceInfo(const QByteArray &device, QAudio::Mode m_deviceId = AudioDeviceID(deviceID); #else //iOS m_device = device; + if (mode == QAudio::AudioInput) { + if (CoreAudioSessionManager::instance().category() != CoreAudioSessionManager::PlayAndRecord) { + CoreAudioSessionManager::instance().setCategory(CoreAudioSessionManager::PlayAndRecord); + } + } #endif } @@ -379,6 +384,12 @@ QList CoreAudioDeviceInfo::availableDevices(QAudio::Mode mode) } } #else //iOS + if (mode == QAudio::AudioInput) { + if (CoreAudioSessionManager::instance().category() != CoreAudioSessionManager::PlayAndRecord) { + CoreAudioSessionManager::instance().setCategory(CoreAudioSessionManager::PlayAndRecord); + } + } + CoreAudioSessionManager::instance().setActive(true); if (mode == QAudio::AudioOutput) diff --git a/src/plugins/coreaudio/coreaudioinput.mm b/src/plugins/coreaudio/coreaudioinput.mm index c41e1a51..a0b9e9d2 100644 --- a/src/plugins/coreaudio/coreaudioinput.mm +++ b/src/plugins/coreaudio/coreaudioinput.mm @@ -47,6 +47,10 @@ # include #endif +#if defined(Q_OS_IOS) +# include "coreaudiosessionmanager.h" +#endif + #include #include diff --git a/src/plugins/coreaudio/coreaudiosessionmanager.mm b/src/plugins/coreaudio/coreaudiosessionmanager.mm index 4b3bdb7d..0e795e78 100644 --- a/src/plugins/coreaudio/coreaudiosessionmanager.mm +++ b/src/plugins/coreaudio/coreaudiosessionmanager.mm @@ -216,7 +216,8 @@ CoreAudioSessionManager::CoreAudioSessionManager() : { m_sessionObserver = [[CoreAudioSessionObserver alloc] initWithAudioSessionManager:this]; setActive(true); - setCategory(CoreAudioSessionManager::PlayAndRecord, CoreAudioSessionManager::MixWithOthers); + //set default category to just Playback and only switch if we need more permissions + setCategory(CoreAudioSessionManager::Playback, CoreAudioSessionManager::MixWithOthers); } CoreAudioSessionManager::~CoreAudioSessionManager()