2012-07-26 4 views
0

좋은 하루, AVAudioRecorder를 사용하여 녹음 한 후 녹음 프로젝트를 만드는 데 도움이 될 수 있습니까? 특정 시간에 자동으로 재생할 수 있습니까? 나 또는 사이트 나 내 질문에 관한 링크. 심하게 당신의 도움을 주인이 필요합니다, 왜냐하면 난 IOS 개발에 새로운이야. 선배들 덕분에. 좋은 하루 되세요. 당신이 필요로하는 모든 뭔가가 NSTimer를 사용하여 일정 시간 후 일어날 수 있도록하는 방법을 경우목표 C : 특정 시간에 녹음 한 후 자동 재생

-(void)startRecording:(UIButton *)sender 
{ //for recording 

    recStopBtn.enabled=NO; 
    recStopBtn.hidden = NO; 
    recStopBtn.enabled =YES; 
    playRecBtn.enabled = NO; 
    loading.hidden = NO; 
    [loading startAnimating]; 

    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; 
    } 
    [audioSession setActive:YES error:&err]; 
    err = nil; 
    if(err) 
    { 
     NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
     return; 
    } 

    recordSetting = [[NSMutableDictionary alloc] init]; 

    // We can use kAudioFormatAppleIMA4 (4:1 compression) or kAudioFormatLinearPCM for nocompression 
    [recordSetting setValue :[NSNumber numberWithInt:kAudioFormatAppleIMA4] forKey:AVFormatIDKey]; 

    // We can use 44100, 32000, 24000, 16000 or 12000 depending on sound quality 
    [recordSetting setValue:[NSNumber numberWithFloat:16000.0] forKey:AVSampleRateKey]; 

    // We can use 2(if using additional h/w) or 1 (iPhone only has one microphone) 
    [recordSetting setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey]; 

    // These settings are used if we are using kAudioFormatLinearPCM format 
    //[recordSetting setValue :[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; 
    //[recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey]; 
    //[recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey]; 

    recorderFilePath = [NSString stringWithFormat:@"%@/MySound.caf", DOCUMENTS_FOLDER]; 



    NSLog(@"recorderFilePath: %@",recorderFilePath); 

    NSURL *url = [NSURL fileURLWithPath:recorderFilePath]; 

    err = nil; 

    NSData *audioData = [NSData dataWithContentsOfFile:[url path] options: 0 error:&err]; 
    if(audioData) 
    { 
     NSFileManager *fm = [NSFileManager defaultManager]; 
     [fm removeItemAtPath:[url path] error:&err]; 
    } 

    err = nil; 
    recorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:&err]; 
    if(!recorder){ 
     NSLog(@"recorder: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
     UIAlertView *alert = 
     [[UIAlertView alloc] initWithTitle: @"Warning" 
            message: [err localizedDescription] 
            delegate: nil 
         cancelButtonTitle:@"OK" 
         otherButtonTitles:nil]; 
     [alert show]; 

     return; 
    } 

    //prepare to record 
    [recorder setDelegate:self]; 
    [recorder prepareToRecord]; 
    recorder.meteringEnabled = YES; 

    BOOL audioHWAvailable = audioSession.inputIsAvailable; 
    if (! audioHWAvailable) { 
     UIAlertView *cantRecordAlert = 
     [[UIAlertView alloc] initWithTitle: @"Warning" 
            message: @"Audio input hardware not available" 
            delegate: nil 
         cancelButtonTitle:@"OK" 
         otherButtonTitles:nil]; 
     [cantRecordAlert show]; 

     return; 
    } 

    // start recording 
    [recorder record]; 

    lblStatusMsg.text = @"Recording..."; 
    NSLog(@"RECORDING"); 
    //recIcon.image = [UIImage imageNamed:@"rec_icon.png"]; 
    //progressView.progress = 0.0; 
    //timer = [NSTimer scheduledTimerWithTimeInterval:6.0 target:self selector:@selector(handleTimer) userInfo:nil repeats:YES]; 
} 
+3

이 질문은 기본적으로 당신을 위해 코드를 작성하도록 요청 않습니다. 너무 넓은. FAQ를 읽고, 다시 형식을 바꾸어 다시 읽어주십시오. –

+0

@ EricBrotto- 선생님 ... 죄송합니다. 내 코드를 올렸습니다 ... 여기 있습니다 .. –

+0

도움이 필요하면 코드가 지금 무엇을하고 무엇을 하려는지 알려주십시오. 이미 일을하고 팁이나 문제 해결이 필요한 경우 가장 많은 도움을받을 수 있습니다. – Dustin

답변

0

:

여기 내 코드 @의 startrecording입니다. 이미 코드에서 주석 처리 된 것을 보았습니다.

일정한 시간 동안 기록하려면 recordForDuration을 사용하십시오. 수동으로 기록을 중지하려면 stop을 사용하십시오. 녹음을 재생하려면 AVAudioRecorderurl 속성을 AVAudioPlayer 방법 initWithContentsOfURL에 사용하십시오. 주석 그래서 기본적으로

, 당신의 NSTimer 한 다음

AVAudioPlayer *player; 
- (void) handleTimer 
{ 
    player = [[AVAudioPlayer alloc] initWithContentsOfURL:nameOfAudioRecorder.url]; 
} 
+0

내 질문에 대한 특정 답변을 주셔서 감사합니다! :디 –