2011-10-27 11 views
2

AVAudioRecorderを使用してサウンドを録音していますが、問題があります。iphone:AVAudioRecorderレコーディングは常にFALSEを返します

[recorder record]メソッドを呼び出した後、recorder.recordingの値は常にFALSEを返し、記録を停止できなくなります。

私はiOS 5でXCode 4.2を使用していますが、私の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

について

の記録を開始する前に、セッションをアクティブ化は、それが成功であるか失敗したかどうかにブール値を返します。レコード通話が成功したかどうか確認できますか? – Saran

+0

[aレコーダーレコード]からの戻り値はFALSEです。それは成功しないことを意味します。私のコードは間違っていますか? – haisergeant

+0

誰でも助けてくれますか? – haisergeant

答えて

0

あなたも遅延を見ていますか? iPhone4のハードウェアでiOS5を使用しているときに問題が発生しています。これは、録音方法に3-4秒の遅延があり、録音を開始できないことがあります。私は同じ問題で推奨されているようにprepareToRecordを呼び出しています。

これはiOS4/iPhone4やiOS5/iPhone4Sでは問題ありません...古いハードウェアで新しいOSを実行する際に問題があるようです。

+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

後にオーディオセッションをAVAudioSessionを使用してみてくださいあなたのアプリとiOSの間の仲介は、アプリケーションのオーディオ動作を設定するために使用されます。起動時に、あなたのアプリは自動的にシングルトンのオーディオセッションを取得します。

ので、[記録aRecorder]スウィフト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 
関連する問題