J'essaie d'enregistrer de l'audio depuis mon simulateur IPhone, puis de l'enregistrer dans le répertoire puis de le lire. Puisque je ne peux pas entendre mon enregistrement audio, je ne suis même pas sûr si c'est en train d'enregistrer en premier lieu. Voici mon code:Enregistrement et lecture audio dans la programmation IPhone
-(IBAction) playRecording:sender
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dir = [paths objectAtIndex:0];
NSFileManager *filemanager = [NSFileManager defaultManager];
NSArray *files = [filemanager contentsOfDirectoryAtPath:dir error:nil];
NSString *file = [files objectAtIndex:0];
NSString *path = [dir stringByAppendingPathComponent:file];
NSURL *url = [NSURL URLWithString:path]; // url is nil
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
player.volume = 0.3;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[player play];
}
-(IBAction) record:sender
{
if(recorder.recording)
{
[recorder stop];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategorySoloAmbient error:nil];
[recordButton setTitle:@"Record" forState:UIControlStateNormal];
}
else
{
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryRecord error:nil];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString *dir = [paths objectAtIndex:0];
NSString *filename = [[NSString alloc] initWithString:@"myfile.caf"];
NSString *path = [dir stringByAppendingPathComponent:filename];
NSMutableDictionary *settings = [[NSMutableDictionary alloc] init];
[settings setValue:[NSNumber numberWithInt:kAudioFormatAppleLossless] forKey:AVFormatIDKey];
[settings setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[settings setValue:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];
[settings setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[settings setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[settings setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
[recorder release];
recorder = [[AVAudioRecorder alloc] initWithURL:[NSURL fileURLWithPath:path]
settings:settings error:nil];
[recorder prepareToRecord];
recorder.meteringEnabled = YES;
[recorder record];
[recordButton setTitle:@"Stop" forState:UIControlStateNormal];
}
}
MISE À JOUR 1:
La variable url dans playRecording toujours évalué à zéro.