Я программирую приложение, которое позволяет мне записывать звуки дверного звонка и воспроизводить их на дверном звонке, который пользователь видит, когда нажимает кнопку.Мое приложение, кажется, записывает и сохраняет файл (файл находится там (в Документах) в соответствии с симулятором iPhone, поскольку я создал каталог в делегате приложения)).Однако воспроизведение не работает.(Кстати, свойство записи возвращает TRUE.)
ОБНОВЛЕНИЕ : Вот почтовый индекс всего проекта .
Может кто-нибудь помочь мневидите что не так?
- (void)viewDidLoad {
[super viewDidLoad];
self.view.layer.cornerRadius = 8;
[actionButton setBackgroundImage:[[UIImage imageNamed:@"biggreenbutton.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal];
NSFileManager *nsf = [NSFileManager defaultManager];
NSArray *allDocs = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [allDocs objectAtIndex:0];
NSString *savedDBells = [path stringByAppendingPathComponent:@"Custom Doorbells"];
NSString *nextFile;
for (NSInteger i = 1; i < 100; i++){
if (![nsf fileExistsAtPath:[savedDBells stringByAppendingPathComponent:[NSString stringWithFormat:@"d%i%@",i,@".caf"]]]){
nextFile = [savedDBells stringByAppendingPathComponent:[NSString stringWithFormat:@"d%i%@",i,@".caf"]];
break;
}
}
NSURL *url = [[NSURL alloc] initFileURLWithPath:nextFile];
NSDictionary *setup = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithInt:kAudioFormatMPEG4AAC],AVFormatIDKey,
[NSNumber numberWithInt:44100.0],AVSampleRateKey,
[NSNumber numberWithInt: 2],AVNumberOfChannelsKey,
[NSNumber numberWithInt:16],AVLinearPCMBitDepthKey,
[NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey,
[NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,
nil];
NSError *err;
NSLog(@"%@",url);
recorder = [[AVAudioRecorder alloc] initWithURL:url settings:setup error:&err];
[setup release];
[url release];
//Gradient code
/*
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.view.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor] CGColor], (id)[[UIColor blackColor] CGColor], nil];
[self.view.layer insertSublayer:gradient atIndex:0];
*/
}
-(IBAction) actionButtonPressed: (id) sender{
NSLog(@"%@",actionButton.titleLabel.text);
if ([actionButton.titleLabel.text isEqual:@"Finish Recording"]){
BOOL test = recorder.recording;
NSLog(@"Recording property = %i",test);
[upCounter invalidate];
[recorder stop];
[self dismissModalViewControllerAnimated:YES];
}
if ([actionButton.titleLabel.text isEqual:@"Begin Recording"]){
upCounter = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:upCounter forMode:NSDefaultRunLoopMode];
[actionButton setTitle:@"Finish Recording" forState:UIControlStateNormal];
[actionButton setBackgroundImage:[[UIImage imageNamed:@"bigredbutton.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal];
NSLog(@"Recorder record = %i",[recorder record]);
}
}
В другом контроллере вида:
-(IBAction) recordingButtonPressed:(id) sender{
AVAudioSession *avs = [AVAudioSession sharedInstance];
//Test for written folder
/*NSFileManager *fileMan = [NSFileManager defaultManager];
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
*/
if (avs.inputIsAvailable){
NSString *recordedFile;
RecordingViewController *recorderVC = [[RecordingViewController alloc] initWithNibName:@"RecordingViewController" bundle:nil];
recorderVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:recorderVC animated:YES];
recordedFile = [recorderVC.recorder.url absoluteString];
[recorderVC release];
self.currentSoundPath = recordedFile;
NSLog(@"%@",currentSoundPath);
/*if ([fileMan fileExistsAtPath:recordedFile]){
UIActionSheet *overwrite = [[UIActionSheet alloc] initWithTitle:@"Overwrite the current doorbell recording?" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Overwrite" otherButtonTitles:nil];
overwrite.delegate = self;
[overwrite showInView:self.view];
[overwrite release];
}*/
/*NSDictionary *recorderSettingsDict=[[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithInt:kAudioFormatAppleIMA4],AVFormatIDKey,
[NSNumber numberWithInt:44100.0],AVSampleRateKey,
[NSNumber numberWithInt: 2],AVNumberOfChannelsKey,
[NSNumber numberWithInt:16],AVLinearPCMBitDepthKey,
[NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey,
[NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,
nil];
AVAudioRecorder *recorder = [[AVAudioRecorder alloc] initWithURL:recordedFile settings:<#(NSDictionary *)settings#> error:<#(NSError **)outError#>];*/
}
else{
UIAlertView *noAudio = [[UIAlertView alloc] initWithTitle:@"No microphone connected" message:@"Please connect a microphone to record a doorbell." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[noAudio show];
[noAudio release];
}
}