Я сталкиваюсь со странной проблемой с AVAudioRecorder. В моем приложении я должен записать аудио и играть его. Я создаю свой плеер как:
if(recorder)
{
if(recorder.recording)
[recorder stop];
[recorder release];
recorder = nil;
}
NSString * filePath = [NSHomeDirectory() stringByAppendingPathComponent: [NSString stringWithFormat:@"Documents/%@.caf",songTitle]];
NSDictionary *recordSettings = [[NSDictionary alloc] initWithObjectsAndKeys:
[NSNumber numberWithFloat: 44100.0],AVSampleRateKey,
[NSNumber numberWithInt: kAudioFormatAppleIMA4],AVFormatIDKey,
[NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
[NSNumber numberWithInt: AVAudioQualityMax],AVEncoderAudioQualityKey,nil];
recorder = [[AVAudioRecorder alloc] initWithURL: [NSURL fileURLWithPath:filePath] settings: recordSettings error: nil];
recorder.delegate = self;
if ([recorder prepareToRecord] == YES){
[recorder record];
Я выпускаю и создаю плеер каждый раз, когда я нажимаю кнопку записи. Но проблема состоит в том, что, AVAudiorecorder занимает время прежде, чем начать записывать, и поэтому если я нажимаю кнопку записи многократно непрерывно, мое приложение замораживается в течение некоторого времени. Тот же код хорошо работает без любой проблемы, когда наушники подключены к устройству... нет никакой задержки записи, и приложение не замораживается, даже если я нажимаю кнопку записи многократно.
Будет greatful, если кто-либо будет вести меня в исправлении этой проблемы. Любая справка в этом отношении будет высоко цениться.
Заранее спасибо.
Нашел решение. Я просто добавил код
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *err = nil;
[audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];
if(err){
NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
return;
}
err = nil;
[audioSession setActive:YES error:&err];
if(err){
NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
return;
}
и теперь он работает нормально. Однако я хотел бы знать, что изменил этот кусок кода? И почему мое приложение работает нормально с подключенными наушниками, а без них замирает?
.