IOS Audio Recording, Как проверить, занят ли микрофон / воспроизведение, прежде чем брать микрофон

Если что-то воспроизводится, записывается, как мы можем проверить, доступен ли микрофон (в режиме ожидания) для записи? В настоящее время использую

AVCaptureDevice *audioCaptureDevice      = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
AVCaptureSession *captureSession         = [[AVCaptureSession alloc] init];
VCaptureDeviceInput *audioInput          = [AVCaptureDeviceInput deviceInputWithDevice : audioCaptureDevice error:&error];
AVCaptureAudioDataOutput    *audioOutput = [[AVCaptureAudioDataOutput alloc] init];
[captureSession addInput  : audioInput];
[captureSession addOutput : audioOutput];
[captureSession startRunning];

Необходимо проверить, прежде чем брать MIC / Playback от того, что уже есть.

Ответы на вопрос(1)

Решение Вопроса

заблокирован, даже если вы звоните[AVCaptureDevice lockForConfiguration] на микрофонном устройстве оно не блокирует его и все еще доступно для приложения переднего плана.

Чтобы увидеть, воспроизводится ли другой звук, вы можете проверитьkAudioSessionProperty_OtherAudioIsPlaying например.:

UInt32 propertySize, audioIsAlreadyPlaying=0;
propertySize = sizeof(UInt32);
AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying, &propertySize, &audioIsAlreadyPlaying);

Дополнительно наРуководство по программированию аудио сессий говорится: «Нет никакого программного способа гарантировать, что аудиосеанс никогда не прерывается. Причина в том, что iOS всегда отдает приоритет телефону. iOS также отдает высокий приоритет определенным тревогам и оповещениям»

 ort1109 апр. 2012 г., 17:28
Проверим это и вернемся. Я видел это в спецификации / другом коде, но искал микрофон без игры, но мог бы подумать, что он тоже для микрофона. Да, на прерывание. Я зарегистрировал ошибку с APPLE, когда прерывания по окончании не возвращались в приложение должным образом / постоянно (телефон / трубка и т. Д.).
 Tom Pace13 янв. 2013 г., 04:23
Используя приведенный выше код, окончательное значение audioIsAlreadyPlaying равно 0, когда воспроизводится звук, но не равно нулю, когда активирован выключатель звука устройства. Странный

Ваш ответ на вопрос