5#import <AVFoundation/AVAudioSession.h>
6#import <Foundation/Foundation.h>
17@property (readonly, getter=audioSession) AVAudioSession *m_audioSession;
22-(BOOL)deactivateAudio;
25-(
void)audioSessionInterruption:(NSNotification *)notification;
26-(
void)audioSessionRouteChange:(NSNotification *)notification;
27-(
void)audioSessionMediaServicesWereReset:(NSNotification *)notification;
37 if (!(self = [super
init]))
40 self->m_sessionManager = sessionManager;
41 self->m_audioSession = [AVAudioSession sharedInstance];
44 [[NSNotificationCenter defaultCenter] addObserver:self
45 selector:@selector(audioSessionInterruption:)
46 name:AVAudioSessionInterruptionNotification
47 object:self->m_audioSession];
48 [[NSNotificationCenter defaultCenter] addObserver:self
49 selector:@selector(audioSessionMediaServicesWereReset:)
50 name:AVAudioSessionMediaServicesWereResetNotification
51 object:self->m_audioSession];
52 [[NSNotificationCenter defaultCenter] addObserver:self
53 selector:@selector(audioSessionRouteChange:)
54 name:AVAudioSessionRouteChangeNotification
55 object:self->m_audioSession];
62#ifdef QT_DEBUG_COREAUDIO
66 [[NSNotificationCenter defaultCenter] removeObserver:self
67 name:AVAudioSessionInterruptionNotification
68 object:self->m_audioSession];
69 [[NSNotificationCenter defaultCenter] removeObserver:self
70 name:AVAudioSessionMediaServicesWereResetNotification
71 object:self->m_audioSession];
72 [[NSNotificationCenter defaultCenter] removeObserver:self
73 name:AVAudioSessionRouteChangeNotification
74 object:self->m_audioSession];
82 BOOL success = [
self->m_audioSession setActive:YES error:&error];
84#ifdef QT_DEBUG_COREAUDIO
85 qDebug(
"audio session activation failed: %s", [[
error localizedDescription] UTF8String]);
87 qDebug(
"audio session activated");
97 BOOL success = [m_audioSession setActive:NO error:&error];
98#ifdef QT_DEBUG_COREAUDIO
100 qDebug(
"%s", [[
error localizedDescription] UTF8String]);
106-(
void)audioSessionInterruption:(NSNotification *)notification
108 NSNumber *
type = [[notification userInfo] valueForKey:AVAudioSessionInterruptionTypeKey];
109 if ([
type intValue] == AVAudioSessionInterruptionTypeBegan) {
110#ifdef QT_DEBUG_COREAUDIO
111 qDebug(
"audioSession Interuption begain");
113 }
else if ([
type intValue] == AVAudioSessionInterruptionTypeEnded) {
114#ifdef QT_DEBUG_COREAUDIO
115 qDebug(
"audioSession Interuption ended");
117 NSNumber *
option = [[notification userInfo] valueForKey:AVAudioSessionInterruptionOptionKey];
118 if ([
option intValue] == AVAudioSessionInterruptionOptionShouldResume) {
119#ifdef QT_DEBUG_COREAUDIO
120 qDebug(
"audioSession is active and immediately ready to be used.");
123 [
self activateAudio];
128-(
void)audioSessionMediaServicesWereReset:(NSNotification *)notification
131#ifdef QT_DEBUG_COREAUDIO
132 qDebug(
"audioSession Media Services were reset");
135 [
self activateAudio];
138-(
void)audioSessionRouteChange:(NSNotification *)notification
140 NSNumber *reason = [[notification userInfo] valueForKey:AVAudioSessionRouteChangeReasonKey];
143 if (reasonEnum == AVAudioSessionRouteChangeReasonUnknown) {
144#ifdef QT_DEBUG_COREAUDIO
145 qDebug(
"audioSession route changed. reason: unknown");
147 }
else if (reasonEnum == AVAudioSessionRouteChangeReasonNewDeviceAvailable) {
148#ifdef QT_DEBUG_COREAUDIO
149 qDebug(
"audioSession route changed. reason: new device available");
151 }
else if (reasonEnum == AVAudioSessionRouteChangeReasonOldDeviceUnavailable) {
152#ifdef QT_DEBUG_COREAUDIO
153 qDebug(
"audioSession route changed. reason: old device unavailable");
155 }
else if (reasonEnum == AVAudioSessionRouteChangeReasonCategoryChange) {
156#ifdef QT_DEBUG_COREAUDIO
157 qDebug(
"audioSession route changed. reason: category changed");
159 }
else if (reasonEnum == AVAudioSessionRouteChangeReasonOverride) {
160#ifdef QT_DEBUG_COREAUDIO
161 qDebug(
"audioSession route changed. reason: override");
163 }
else if (reasonEnum == AVAudioSessionRouteChangeReasonWakeFromSleep) {
164#ifdef QT_DEBUG_COREAUDIO
165 qDebug(
"audioSession route changed. reason: woken from sleep");
167 }
else if (reasonEnum == AVAudioSessionRouteChangeReasonNoSuitableRouteForCategory) {
168#ifdef QT_DEBUG_COREAUDIO
169 qDebug(
"audioSession route changed. reason: no suitable route for category");
178CoreAudioSessionManager::CoreAudioSessionManager() :
184CoreAudioSessionManager::~CoreAudioSessionManager()
186#ifdef QT_DEBUG_COREAUDIO
189 [m_sessionObserver release];
210 NSString *targetCategory = nil;
214 targetCategory = AVAudioSessionCategoryAmbient;
217 targetCategory = AVAudioSessionCategorySoloAmbient;
220 targetCategory = AVAudioSessionCategoryPlayback;
223 targetCategory = AVAudioSessionCategoryRecord;
226 targetCategory = AVAudioSessionCategoryPlayAndRecord;
230 targetCategory = AVAudioSessionCategoryAudioProcessing;
234 targetCategory = AVAudioSessionCategoryMultiRoute;
238 if (targetCategory == nil)
242 withOptions:(AVAudioSessionCategoryOptions)options
248 NSString *targetMode = nil;
251 targetMode = AVAudioSessionModeDefault;
254 targetMode = AVAudioSessionModeVoiceChat;
257 targetMode = AVAudioSessionModeGameChat;
260 targetMode = AVAudioSessionModeVideoRecording;
263 targetMode = AVAudioSessionModeMeasurement;
266 targetMode = AVAudioSessionModeMoviePlayback;
270 if (targetMode == nil)
282 if (
category == AVAudioSessionCategoryAmbient) {
284 }
else if (
category == AVAudioSessionCategorySoloAmbient) {
286 }
else if (
category == AVAudioSessionCategoryPlayback) {
288 }
else if (
category == AVAudioSessionCategoryRecord) {
290 }
else if (
category == AVAudioSessionCategoryPlayAndRecord) {
293 }
else if (
category == AVAudioSessionCategoryAudioProcessing) {
296 }
else if (
category == AVAudioSessionCategoryMultiRoute) {
300 return localCategory;
308 if (
mode == AVAudioSessionModeDefault) {
310 }
else if (
mode == AVAudioSessionModeVoiceChat) {
312 }
else if (
mode == AVAudioSessionModeGameChat) {
314 }
else if (
mode == AVAudioSessionModeVideoRecording) {
316 }
else if (
mode == AVAudioSessionModeMeasurement) {
318 }
else if (
mode == AVAudioSessionModeMoviePlayback) {
355#ifdef QT_DEBUG_COREAUDIO
361 output <<
"AudioSessionCategoryAmbient";
364 output <<
"AudioSessionCategorySoloAmbient";
367 output <<
"AudioSessionCategoryPlayback";
370 output <<
"AudioSessionCategoryRecord";
373 output <<
"AudioSessionCategoryPlayAndRecord";
376 output <<
"AudioSessionCategoryAudioProcessing";
379 output <<
"AudioSessionCategoryMultiRoute";
390 output <<
"AudioSessionCategoryOptionNone";
393 output <<
"AudioSessionCategoryOptionMixWithOthers";
396 output <<
"AudioSessionCategoryOptionDuckOthers";
399 output <<
"AudioSessionCategoryOptionAllowBluetooth";
402 output <<
"AudioSessionCategoryOptionDefaultToSpeaker";
413 output <<
"AudioSessionModeDefault";
416 output <<
"AudioSessionModeVoiceChat";
419 output <<
"AudioSessionModeGameChat";
422 output <<
"AudioSessionModeVideoRecording";
425 output <<
"AudioSessionModeMeasurement";
428 output <<
"AudioSessionModeMoviePlayback";
437#include "moc_qcoreaudiosessionmanager_p.cpp"
QList< QByteArray > outputDevices()
AudioSessionCategorys category()
bool setCategory(AudioSessionCategorys category, AudioSessionCategoryOptions options=None)
float preferredSampleRate()
AudioSessionCategoryOptions
bool setMode(AudioSessionModes mode)
void devicesAvailableChanged()
QList< QByteArray > inputDevices()
bool setActive(bool active)
static CoreAudioSessionManager & instance()
float currentIOBufferDuration()
const QLoggingCategory & category()
[1]
AVAudioSession * m_audioSession
CoreAudioSessionManager * m_sessionManager
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
DBusConnection const char DBusError * error
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
QT_BEGIN_NAMESPACE typedef uchar * output