Я использую AVAudioRecorder
для записи аудиофайла. Код, который я использую, отлично работает в iOS 8 и ниже, но с момента последнего обновления iOS 9 запись, похоже, перестала работать.AVAudioRecorder в iOS 9 Не работает
Я попытался войти свойства AVAudioRecorder
объекта и даже после того, как вызов функции «запись» в AVAudioRecorder
isRecording
показывают, как NO и, когда функция «стоп» называется я получить вызов обратно в делегате - (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag;
с успехом flag as NO
audioSession = [AVAudioSession sharedInstance];
NSError *err = nil;
[audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];
if(err){
NSLog(@"audioSession: %@ %ld %@", [err domain], (long)[err code], [[err userInfo] description]);
return;
}
[audioSession setActive:YES error:&err];
recordSetting = [[NSMutableDictionary alloc] init];
[recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:16000.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey];
[recordSetting setValue :[NSNumber numberWithInt:16] forKey:AVEncoderBitRateKey];
[recordSetting setValue :[NSNumber numberWithInt:8] forKey:AVLinearPCMBitDepthKey];
[recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
[recordSetting setValue :[NSNumber numberWithInt:AVAudioQualityMin] forKey:AVEncoderAudioQualityKey];
recorderFilePath = [NSString stringWithFormat:@"%@/%@.m4a", DOCUMENTS_FOLDER,@"sample"];
NSLog(@"RecorderFilePath : %@",recorderFilePath);
NSURL *url = [NSURL fileURLWithPath:recorderFilePath];
err = nil;
recorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:&err];
//prepare to record
[recorder setDelegate:self];
[recorder prepareToRecord];
recorder.meteringEnabled = YES;
BOOL audioHWAvailable = audioSession.inputAvailable;
[recorder record];
Пожалуйста, сообщите, если я делаю что-то неправильно в коде.
Очень простая причина может быть: доступ к микрофону разрешено в настройках приложения Является ли? –
Нет, я дважды проверил, что разрешение на доступ к микрофону включено. –
Возникает ли проблема на устройстве, и если да, то какой? (iPad 1/2/3/4/Air ...?) –