使用AVAudioRecorder在后台录制语音

我试图用AVAudioRecorder在后台录制用户声音,但是每次我在调用recordForDuration方法的时候都得到NO 。 我添加“audio”到UIBackgroundModes但这没有帮助。 顺便说一下,一切工作完美的前景。 我正在使用这个代码初始化AVAudioRecorder

 NSError* error; if (![[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryRecord error:&error]) { NSLog(@"Error while setting audio session category. Code - %d, description - \"%@\".", [error code], [error localizedDescription]); return; } NSURL* outputFileURL = [VKMFileSystemHelper uniqueFileInPath:[[VKMFileSystemHelper subdirectoryInsideLibrary:DIR_AUDIO] path] withExtension:@"m4a"]; NSDictionary* recordSettings = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:kAudioFormatMPEG4AAC], AVFormatIDKey, [NSNumber numberWithInt:AVAudioQualityMin] , AVEncoderAudioQualityKey, [NSNumber numberWithInt:16] , AVEncoderBitRateKey, [NSNumber numberWithInt:1] , AVNumberOfChannelsKey, [NSNumber numberWithFloat:12000.0] , AVSampleRateKey, nil]; _recorder = [[AVAudioRecorder alloc] initWithURL:outputFileURL settings:recordSettings error:&error]; [_recorder setDelegate:self]; if (error) { NSLog(@"Error occured during audio recorder initialization. Error code - %d, description - \"%@\".", [error code], [error localizedDescription]); } else { NSLog(@"Start recording."); if ([_recorder recordForDuration:[shedule execLength]]) { NSLog(@"Record started."); } else { NSLog(@"Record failed."); } } 

我怎样才能从背景麦克风录音? 这可能吗?

尝试这个,

  ***Appdelegate.m*** - (void)applicationDidEnterBackground:(UIApplication *)application { __block UIBackgroundTaskIdentifier task = 0; task=[application beginBackgroundTaskWithExpirationHandler:^{ NSLog(@"Expiration handler called %f",[application backgroundTimeRemaining]); [application endBackgroundTask:task]; task=UIBackgroundTaskInvalid; }]; }