【发布时间】:2014-02-19 21:25:36
【问题描述】:
我想检测 MIC 当前是否被任何其他 iOS 应用程序锁定或使用。我没有得到任何信息来检查 MIC 是否可以使用?如果 MIC 已被其他应用程序、活动通话、facetime 通话使用,我不想让用户录制视频。
谁能告诉我解决这个问题的方法?
提前致谢。
更新:添加检查麦克风是否忙的功能
+(BOOL)isMicResourceBusy
{
NSError *error = nil;
NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] initWithCapacity:10];
NSNumber *formatObject;
formatObject = [NSNumber numberWithInt: kAudioFormatMPEG4AAC ];
[recordSettings setObject:formatObject forKey: AVFormatIDKey];
[recordSettings setObject:[NSNumber numberWithFloat:44100.0] forKey: AVSampleRateKey];
[recordSettings setObject:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];
[recordSettings setObject:[NSNumber numberWithInt:12800] forKey:AVEncoderBitRateKey];
[recordSettings setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[recordSettings setObject:[NSNumber numberWithInt: AVAudioQualityHigh] forKey: AVEncoderAudioQualityKey];
NSURL *soundFileURL = [NSURL fileURLWithPath:[FileUtils getNewFilenameWithPrefix:@"testAudioRecording" ext:@"aac"]];
AVAudioRecorder *audioRecorder = [[AVAudioRecorder alloc]initWithURL:soundFileURL settings:recordSettings error:&error];
if ([audioRecorder prepareToRecord] && error == nil)
{
return NO;
}
else
{
NSLog(@"Error: %@", error.localizedDescription);
}
return YES;
}
【问题讨论】:
-
您是否尝试在其他应用程序使用麦克风时初始化
AVAudioRecorder?我现在无法测试它,但我感觉你会收到一个错误,因此不允许用户记录。 -
@GadMarkovits 请查看我的更新。我编写了一个函数来检查 Mic 是否正在使用
AVAudioRecorder。但即使 Skype 语音通话处于活动状态,它也总是返回 NO。
标签: ios avfoundation microphone video-recording voice-recording