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

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

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 Ответ

6 голосов
/ 04 апреля 2012

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

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

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

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

...