IOS录音,如何在Mic前检查Mic/Playback是否忙

标签 ios audio-recording

如果正在播放、录音,我们如何检查 MIC 是否可用于(空闲)录音?目前正在使用

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 之前需要进行检查。

最佳答案

麦克风设备不能忙/访问它不能被锁定,即使你在麦克风设备上调用[AVCaptureDevice lockForConfiguration]它也不会锁定它并且仍然可以访问它前台应用。

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

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

另外在 Audio Session Programming Guide据称:“没有任何编程方式可以确保 Audio Session 永不中断。原因是 iOS 始终优先考虑电话。iOS 还对某些警报和提醒给予高优先级”

关于IOS录音,如何在Mic前检查Mic/Playback是否忙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9101190/

相关文章:

.net - MonoTouch 中是否缺少 NSDiacriticInsensitiveSearch 比较选项?

保存前创建对象的 iOS 模式?

iphone - 不适用于 App Store - 有人可以告诉我在哪里可以找到系统卷代码吗?

html5-audio - 合并两个音频 blob 录音

IOS录制音频并实时分割成文件

ios - 在 iOS 8/9 上录制音频并将数据传递到 UIWebView (JavascriptCore)

android - 使用 android AudioRecord 获取 32 位样本?

iphone - 将核心数据添加到现有 Xcode 项目时出现未声明的标识符错误

ios - 根据 plist 中的信息隐藏/显示按钮

android - 如何在相机预览中添加文字?