2011-10-27 59 views
2

我使用AVAudioRecorder來記錄聲音,但我有一個問題。iphone:AVAudioRecorder記錄總是返回FALSE

調用方法[錄音機記錄]後,recorder.recording的值總是返回FALSE,讓我無法停止錄製。

我使用的XCode 4.2與iOS 5,我的iPad上的iOS 5還的iPad 2。

這是我的代碼:

self.currentFileName = [GlobalRecording newRecordingFileName]; 
    NSURL *url = [NSURL fileURLWithPath:[[GlobalRecording recordingDirectory] stringByAppendingPathComponent:currentFileName]]; 
NSError *err = nil; 

AVAudioRecorder *aRecorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordingSettings error:&err]; 
if(err){ 
    NSLog(@"could not create a recorder: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    return; 
} 

self.startRecordingTime = [NSDate date]; 
recordingLength = 0.0f; 

// setup recorder and start recording 
[aRecorder setDelegate:self]; 
aRecorder.meteringEnabled = YES; 
[aRecorder record]; 

self.recorder = aRecorder; 
BOOL test = recorder.recording; 
[aRecorder release]; 
+2

[aRecorder記錄]它是否是成功還是失敗,返回boolean值。你可以檢查你的記錄電話是否成功嗎? – Saran

+0

[aRecorder record]的返回值爲FALSE。這意味着它不會成功。我的代碼錯了? – haisergeant

+0

任何人都可以幫助我嗎? – haisergeant

回答

0

你也看到的延遲,當你調用記錄方法?在iPhone4硬件上使用iOS5時遇到問題,其中記錄方法的延遲時間爲3-4秒,偶爾會無法開始記錄。我按照同樣的問題推薦prepareToRecord。

這不是iOS4的/ iPhone4的或的iOS5/iPhone4S的...一個問題,以至於它似乎是舊的硬件上運行新的操作系統的問題。

+0

任何決議這樣做呢?我在相同的設備/軟件版本中遇到同樣的問題。 –

3

嘗試使用後[audioRecord prepareToRecord]

NSError *err = nil; 
audioSession = [AVAudioSession sharedInstance]; 
[audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err]; 

// route to speaker 
UInt32 ASRoute = kAudioSessionOverrideAudioRoute_Speaker; 
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(ASRoute), &ASRoute); 

if (err) 
{ 
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
} 

[audioSession setActive:YES error:&err]; 
0

音頻會話是你的應用程序之間的中介和iOS用於配置您的應用程序的音頻行爲AVAudioSession。啓動後,您的應用程序會自動獲取單身音頻會話。

所以激活您的會話開始錄製

之前雨燕3.0

let session = AVAudioSession.sharedInstance() 
     do { 
      try session.setCategory(AVAudioSessionCategoryPlayAndRecord) 
     } catch let error as NSError { 
      print("could not set session category") 
      print(error.localizedDescription) 
     } 
     do { 
      try session.setActive(true) 
     } catch let error as NSError 
     { 
      print("could not make session active") 
      print(error.localizedDescription) 
     } 
self.recorder.record() // recorder is my AVAudioRecorder