IOS音频录制,如何在使用麦克风前检查麦克风/播放是否忙

IOS音频录制,如何在使用麦克风前检查麦克风/播放是否忙,ios,audio-recording,Ios,Audio Recording,如果正在播放、录制任何内容,我们如何检查麦克风是否可用(空闲)进行录制?当前使用 AVCaptureDevice *audioCaptureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]; AVCaptureSession *captureSession = [[AVCaptureSession alloc] init]; VCaptureDeviceInput *audioI

如果正在播放、录制任何内容,我们如何检查麦克风是否可用(空闲)进行录制?当前使用

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];

在从已有的设备上抓取麦克风/播放之前需要进行检查。

麦克风设备不能忙/无法锁定对它的访问,即使您在麦克风设备上调用
[AVCaptureDevice lockForConfiguration]
它也不会锁定,前台应用程序仍然可以访问它

要查看是否正在播放其他音频,您可以检查
kAudioSessionProperty\u OtherAudioIsPlaying
,例如:

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

此外,它还声明:“没有编程方法确保音频会话不会中断。原因是iOS始终优先考虑手机。iOS还优先考虑某些警报和警报”

麦克风设备不能忙/无法锁定对它的访问,即使您呼叫
[AVCaptureDevice lockForConfiguration]
在麦克风设备上,它不会锁定它,前台应用程序仍然可以访问它

要查看是否正在播放其他音频,您可以检查
kAudioSessionProperty\u OtherAudioIsPlaying
,例如:

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

此外,它还声明:“没有任何编程方法可以确保音频会话不会中断。原因是iOS始终优先考虑手机。iOS还对某些警报和警报给予高优先级。”

将检查它并返回。我在规范/其他代码中看到了这一点,但是寻找MIC不播放,但也可以考虑为MIC。在中断时,是的。我已经记录了一个与苹果有关的错误。使用上面的代码,当音频播放时,AudioIsAdRead播放的最终值是0,但当设备的静音开关处于活动状态时,它是非零的。奇特会检查它并返回。我在规范/其他代码中看到了这一点,但是寻找MIC不播放,但也可以考虑为MIC。是的,在中断。如果APPLE on-end中断没有被正确/始终回拨到应用程序(电话/你的电子管等)。使用上述代码,AudioIsalReadyPlay的最终值在播放音频时为0,但在设备的静音开关处于活动状态时为非零。奇怪