2012-03-12 1 views
1

가끔은보기가 쉽지 않기 때문에 어려운 질문입니다. 내 응용 프로그램에서 AVAudioRecorder를 사용하여 오디오를 녹음합니다. 잘 돌아갈 수 있습니다. 그러나 때로는 다른 앱으로 이동하여 해당 앱의 마이크 기능을 사용하고 내 앱으로 돌아 가면 내 레코드 기능을 레코드 할 수 없으며 모든 레코드 파일의 길이는 0입니다. [레코더 기록] 항상 FALSE를 반환 (이 문제입니다)AVAudioRecorder : 다른 레코드 앱 이후에 녹음 할 수 없습니다.

- 이 [레코더 prepareToRecord은] (파일 .caf 예를 들어 레코드 파일을 만들려면이 방법을) TRUE를 반환 : 나는 디버깅 후

, 나는 것을 발견

[녹음기 레코드]가 FALSE를 반환하는 이유를 모르겠습니다. 누구든지이 문제를 전에 보았습니까?이 문제를 해결하는 방법을 알려 줄 수 있습니까?

대단히 감사합니다. 당신이 당신의 응용 프로그램이

답변

3

는 소리. 중단 및 중단 된 오디오 중단 이벤트를 캡처 할 수 있습니다. 그러나 현재이 버그가 있으며 종료 된 이벤트를 얻지 못하는 경우가 많습니다.

AVCaptureSession   *captureSession; 
....... 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioInterruptionEnded) name:AVCaptureSessionInterruptionEndedNotification object:captureSession]; 
[captureSession addObserver: self forKeyPath:@"running" options:0x3 context:nil]; 
[captureSession addObserver: self forKeyPath:@"interrupted" options:0x3 context:nil]; 

두 가지 방법으로 오디오를 캡처 할 수 있습니다. 상위 레벨 AVCapture 세션 또는 하위 레벨 AudioQueue를 사용하지만 둘 다 첫 번째 단락으로 제한됩니다.

- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{ 
    if ([keyPath isEqualToString:@"interrupted"]) 
    { 
      // try restart here if in foreground 
      // post local notification if in background to bring to foreground and then restart 
    } 
} 
+0

어떻게 할 수 있습니까? 'AudioSessionSetActive (true);'가 도움이되지 않습니다 !! – saiy2k

0

당신 느슨한 녹음 후에는 다시 녹음 오디오를 다시 시작해야합니다 활성화 될 때 AVAudioSession를 활성화해야하고 당신이 할 수있는 전경에 있어야처럼

관련 문제