2011-02-01 75 views
0

我剛剛構建並測試了一臺基本的AVAudioRecorder/AVAudioPlayer錄音機和播放器。最終我得到了這個設備上的工作,以及模擬器。我的播放器/錄音機代碼位於單個UIView子類中。不幸的是,當我將課程複製到我的主項目中時,它不再有效(在設備上 - 模擬器很好)。 prepareToRecord工作正常,但record不是。這裏是一些代碼:AVAudioRecorder prepareToRecord有效,但錄製失敗

audioRecorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:&error]; 
     if ([audioRecorder prepareToRecord]){ 
      audioRecorder.meteringEnabled = YES; 
      if(![audioRecorder record])NSLog(@"recording failed!"); 
     }else { 
      int errorCode = CFSwapInt32HostToBig ([error code]); 
      NSLog(@"preparedToRecord=NO Error: %@ [%4.4s])" , [error localizedDescription], (char*)&errorCode); 
... 

我得到「錄製失敗」。任何人有任何想法,爲什麼發生這種情況?

+0

我發現了這個問題。在我的主項目的其他地方,我使用了一個Cocos2d「SimpleAudioEngine」,它有自己的[AVAudioSession sharedInstance]。我的猜測是,這不知何故干擾我的音頻會話設置,例如,這樣:[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];無論如何,當我刪除我的SimpleAudioEngine時,我的記錄器/播放器就起作用了。當然,這給我帶來了另一個問題...... – iPadDeveloper2011 2011-02-01 21:15:47

回答

1

完整的解決方案是將[SimpleAudioEngine sharedEngine]初始化移到我自己的AVAudioSession setCategory之前。我想在SimpleAudioEngine的某個地方,它做一個setCategory :AVAudioSessionCategoryAmbient。隨着我自己的setCategory :AVAudioSessionCategoryPlayAndRecord覆蓋這一點後,使一切工作。