iOS在7之后增加的麦克风权限的申请,代码如下:
123456789101112
AVAudiosession*avSession=[AVAudioSessionsharedInstance];if([avSessionrespondsToSelector:@selector(requestRecordPermission:)]){[avSessionrequestRecordPermission:^(BOOLavailable){if(available){// 有麦克风权限}else{dispatch_async(dispatch_get_main_queue(),^{[[[UIAlertViewalloc]initWithTitle:@"无法录音"message:@"请在“设置-隐私-麦克风”选项中允许xx访问你的麦克风"delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil]show];});}}];}
iphone检测耳机插入/拔出
判断手机当前是否使用的是内置的麦克风(可以用此方法判断插入的耳机是否有麦克风)
123456789101112131415161718192021222324252627282930313233
-(BOOL)isCurrentUsingBuildInMicrophone{NSError*error=nil;BOOLresult=YES;result=[[AVAudioSessionsharedInstance]setCategory:AVAudioSessionCategoryPlayAndRecorderror:&error];if(!result){NSLog(@"%@",error);returnYES;}result=[[AVAudioSessionsharedInstance]setActive:YESerror:&error];if(!result){NSLog(@"setActive failed");returnYES;}CFDictionaryRefards;UInt32size=sizeof(CFDictionaryRef);OSStatusos=AudioSessionGetPRoperty(kAudioSessionProperty_AudioRouteDescription,&size,&ards);if(os==kAudioSessionNoError&&ards&&CFDictionaryGetValue(ards,kAudioSession_AudioRouteKey_Inputs)){NSArray*inputs=(__bridgeNSArray*)CFDictionaryGetValue(ards,kAudioSession_AudioRouteKey_Inputs);if(inputs&&inputs.count>0){for(NSDictionary*dicininputs){NSString*type=dic[(__bridgeNSString*)kAudioSession_AudioRouteKey_Type];if([typeisEqualToString:(__bridgeNSString*)kAudioSessionInputRoute_BuiltInMic]){returnYES;}}}}else{// 耳机没有micreturnYES;}returnNO;}