2012-02-01 114 views
0

如果有什麼在播放,錄製,如何檢查麥克風是否可用(空閒)進行錄製?目前正在使用IOS錄音,如何在麥克風播放忙碌前檢查麥克風/播放是否正常

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 /播放。

回答

6

即使您在麥克風設備上調用[AVCaptureDevice lockForConfiguration],麥克風設備也不會被鎖定,因此它不會鎖定它,並且它仍然可以被前臺應用程序訪問。

要查看是否有其他的音頻播放,您可以檢查kAudioSessionProperty_OtherAudioIsPlaying例如:

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

另外在Audio Session Programming Guide中指出:「有保證的音頻會話從未中斷沒有編程方式的原因是iOS始終優先考慮手機,iOS也高度重視某些特定的警報和提醒「

+0

將檢查出來並回復。我在規格/其他代碼中看到了這一點,但是尋找麥克風不會播放,但也可以考慮用於麥克風。是的,在中斷。我已經記錄了一個APPLE的錯誤,結束中斷沒有被正確/無時間地調用迴應用程序(Phone/You Tube等)。 – ort11 2012-04-09 15:28:43

+0

使用上面的代碼,audioIsAlreadyPlaying的最終值在播放音頻時爲0,但在設備的靜音開關處於活動狀態時非零。奇怪 – 2013-01-13 03:23:28