mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-04 00:45:46 +08:00
[AFV] Request permission to access microphone on MacOS
This commit is contained in:
committed by
Mat Sutcliffe
parent
9f276c8dbf
commit
4827c0e4ab
@@ -111,10 +111,31 @@ namespace BlackCore
|
|||||||
m_audioInput.reset(new QAudioInput(selectedDevice, m_inputFormat));
|
m_audioInput.reset(new QAudioInput(selectedDevice, m_inputFormat));
|
||||||
m_audioInputBuffer.start();
|
m_audioInputBuffer.start();
|
||||||
|
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
CMacOSMicrophoneAccess::AuthorizationStatus status = m_micAccess.getAuthorizationStatus();
|
||||||
|
if (status == CMacOSMicrophoneAccess::Authorized)
|
||||||
|
{
|
||||||
m_audioInput->start(&m_audioInputBuffer);
|
m_audioInput->start(&m_audioInputBuffer);
|
||||||
connect(&m_audioInputBuffer, &CAudioInputBuffer::frameAvailable, this, &CInput::audioInDataAvailable);
|
connect(&m_audioInputBuffer, &CAudioInputBuffer::frameAvailable, this, &CInput::audioInDataAvailable);
|
||||||
|
|
||||||
m_started = true;
|
m_started = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (status == CMacOSMicrophoneAccess::NotDetermined)
|
||||||
|
{
|
||||||
|
connect(&m_micAccess, &CMacOSMicrophoneAccess::permissionRequestAnswered, this, &CInput::delayedInitMicrophone);
|
||||||
|
m_micAccess.requestAccess();
|
||||||
|
CLogMessage(this).info(u"MacOS requested input device");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CLogMessage(this).error(u"Microphone access not granted. Voice input will not work.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
m_audioInput->start(&m_audioInputBuffer);
|
||||||
|
connect(&m_audioInputBuffer, &CAudioInputBuffer::frameAvailable, this, &CInput::audioInDataAvailable);
|
||||||
|
m_started = true;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void CInput::stop()
|
void CInput::stop()
|
||||||
@@ -174,6 +195,15 @@ namespace BlackCore
|
|||||||
emit opusDataAvailable(opusDataAvailableArgs);
|
emit opusDataAvailable(opusDataAvailableArgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
void CInput::delayedInitMicrophone()
|
||||||
|
{
|
||||||
|
m_audioInput->start(&m_audioInputBuffer);
|
||||||
|
connect(&m_audioInputBuffer, &CAudioInputBuffer::frameAvailable, this, &CInput::audioInDataAvailable);
|
||||||
|
m_started = true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
} // ns
|
} // ns
|
||||||
} // ns
|
} // ns
|
||||||
} // ns
|
} // ns
|
||||||
|
|||||||
@@ -15,6 +15,10 @@
|
|||||||
#include "blacksound/codecs/opusencoder.h"
|
#include "blacksound/codecs/opusencoder.h"
|
||||||
#include "blackmisc/audio/audiodeviceinfo.h"
|
#include "blackmisc/audio/audiodeviceinfo.h"
|
||||||
|
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
#include "blackmisc/macos/microphoneaccess.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <QAudioInput>
|
#include <QAudioInput>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
@@ -133,6 +137,11 @@ namespace BlackCore
|
|||||||
uint m_audioSequenceCounter = 0;
|
uint m_audioSequenceCounter = 0;
|
||||||
|
|
||||||
CAudioInputBuffer m_audioInputBuffer;
|
CAudioInputBuffer m_audioInputBuffer;
|
||||||
|
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
BlackMisc::CMacOSMicrophoneAccess m_micAccess;
|
||||||
|
void delayedInitMicrophone();
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
} // ns
|
} // ns
|
||||||
} // ns
|
} // ns
|
||||||
|
|||||||
Reference in New Issue
Block a user