2010-04-18 7 views
4

AVAudioPlayer를 사용하여 오디오를 재생하는 앱을 작성했습니다.iPhone 응용 프로그램에서 스피커와 헤드폰을 전환하는 방법

나는 스피커로 오디오 전환 기능 구현했습니다 :

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; 
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);  
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None; 
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride); 

이를 통해 라우팅 유지 :

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; 
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);  
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride); 

그러나이 나는이 사용하는 헤드폰으로 다시 전환 할 때 연사.

다른 방향으로 오디오를 찾을 수 없습니다. 누구든지 내가 뭘 잘못하고 있다고 제안 할 수 있습니까?

답변

4

Apple's documentation에 따르면 오디오 세션 라우트 재정의는 kAudioSessionCategory_PlayAndRecord 카테고리를 사용할 때만 사용할 수 있습니다.

카테고리를 kAudioSessionCategory_PlayAndRecord으로 변경하고 kAudioSessionProperty_OverrideCategoryDefaultToSpeaker 속성 키를 사용하여 오디오를 스피커로 라우트 할 수 있습니다.

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; 
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride); 

그것은 AVAudioSessionCategoryPlayAndRecord를 사용하는 것이 매우 중요합니다 또는 경로가 스피커로 이동 실패합니다처럼 로랑 말했다

0

, 그래서 같이 PlayAndRecord를 사용해보십시오. 오디오 세션에 대한 대체 경로를 설정하면 AVAudioPlayer 인스턴스를 사용하고 일부 출력을 스피커로 보낼 수 있습니다.

희망은 나를 위해했던 것처럼 다른 사람들에게도 도움이됩니다. 이 문서는 흩어져 있지만 Skype 앱이 가능하다는 것이 증명되었습니다. 인내, 내 친구들! :) 여기

일부 애플 문서 : http://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/AudioSessionServicesReference/Reference/reference.html

kAudioSessionProperty_OverrideAudioRoute

의 페이지에서 검색을 수행
관련 문제