2010-01-28 4 views
0

내 iPhone 응용 프로그램은 사용자가 헤드폰을 연결했는지 여부를 알고 있어야합니다. 쉽습니다. AudioSessionAddPropertyListener로, kAudioSessionProperty_AudioRouteChange를 청취하는 콜백을 가진다.중단 후 녹음 할 때 오디오 경로 변경 알림이 지연됩니다.

NSLog로 로그를 작성합니다. 사용자가 헤드폰을 꽂으시겠습니까? gdb 콘솔에서 알림 및 한 줄을 가져옵니다. 사용자가 헤드폰을 뽑았습니까? 같게.

동시에 오디오 녹음 대기열을 시작하여 환경의 소음을 감지하고 있습니다. 이것 역시 훌륭하게 작동합니다 : 마이크 잡음 레벨을 얻고 오디오 경로 변경 사항을 청취 할 수 있습니다.

중단 후 오디오 세션을 다시 활성화하고 오디오 카테고리를 kAudioSessionCategory_RecordAudio로 복원하면 오디오 경로 알림이 다소 복잡해집니다.

헤드폰을 연결할 때 알림이 표시되지 않습니다. 헤드폰을 뽑으면 "연결됨"알림과 "연결되지 않은"알림이 빠르게 연속적으로 표시됩니다.

"플러그인 된"알림이 지연된 것과 같으며 "연결되지 않은"알림이 도착하면 보류중인 알림 큐가 플러시됩니다.

내가 뭘 잘못하고 있니? 오디오 세션을 올바르게 복원하여 시간을 많이 보내는 알림을 받으려면 어떻게합니까?

EDIT : iPhone OS 3.1.2, iPhone 3G에서 실행 중. 3.0 SDK (XCode 3.1.2 내에서)로 컴파일 된 프로그램을 실행하고 있습니다.

+0

어떤 OS 및 하드웨어입니까? –

+0

죄송합니다 : OS/하드웨어 버전을 추가하기 위해 편집 된 질문입니다. –

답변

0

나는 동일한 문제가 있지만 더 많은 정보를 가지고 있으므로 질문이 있습니다. 나 같은 소리로 OpenAL을 사용하고 있습니까? 나와 같은 iPod 음악도 지원합니까? 쿼츠 메뉴 화면에서 헤드폰 연결이 끊어 지지만 glView 게임 화면에서 대부분 실패합니다. 때때로 첫 번째 연결 끊기가 작동하고 실패합니다. 언젠가 재접속도 실패합니다. 그래서 석영 화면으로 전환 할 때 클릭해야하는 6 개의 연결 해제 대화 상자가 나타납니다. 이것은 OpenAL 사운드입니다. iPod 음악에서 나는 iPod Music이 재생되는 동안에 만 NSNotificationCenter MPMusicPlayerControllerPlaybackStateDidChangeNotification 알림으로 전환하고 작동합니다. iPhone 및 iTouch에서 OS 3.1.0으로 빌드 된 OS 3.1.3. AudioSessionInitialize()에서 반환 된 오류 코드를 확인하십시오. 내 문제 였고, 먼저 호출되지 않아 실패했습니다. EDIT : 수정이 실패했습니다. 이는 간헐적 인/임의의 문제이며, CPU로드가 높기 때문에 발생합니다.

+0

OpenAL, 곧바로 오디오 세션/오디오 대기열 호출을 사용하지 않습니다. 또한 iPod 음악이 없습니다! 나는 실패를 기록하고, AudioSessionInitialize()는 확실히 성공을 나타내고있다. (다른 오디오 세션/오디오 대기열 기능보다 먼저 호출되기도합니다. –