2014-04-07 7 views
3

이 주제와 관련하여 유용한 정보를 찾을 수없는 것 같습니다.라우드 스피커를 통해 오디오 출력을 전환하려면 어떻게해야합니까?

AVAudioPlayer를 사용하는 경우 앱에서 확성기 대신 스피커 (이어폰)를 통해 오디오 재생이 임의로 시작됩니다. 이 경우, 이어 피스를 사용하여 UIWebView를 통해 직접 YouTube에서 스트리밍 된 YouTube 비디오도 재생됩니다.

출력 소스를 전환하는 방법을 아는 사람이 있습니까?

답변

2

헤드폰이 연결되어 있어도 iPhone 스피커를 통해 오디오 파일을 재생할 수 없습니까?

출력 장치가 언제 꽂혀 있는지 또는 출력되지 않았는 지에 대한 알림을받을 수 있으며 이에 따라 우리가 할 수 있습니다. 아래 코드 이 참조 용 코드입니다.

void audioRouteChangeListenerCallback (void *inUserData, AudioSessionPropertyID inPropertyID, UInt32 inPropertyValueSize, const void *inPropertyValue) { 
if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return; 

MPMusicPlayerController *controller = (__bridge MPMusicPlayerController *)inUserData; 

CFDictionaryRef routeChangeDictionary = inPropertyValue; 

CFNumberRef routeChangeReasonRef = CFDictionaryGetValue(routeChangeDictionary, CFSTR (kAudioSession_AudioRouteChangeKey_Reason)); 
SInt32 routeChangeReason; 
CFNumberGetValue (routeChangeReasonRef, kCFNumberSInt32Type, &routeChangeReason); 

CFStringRef oldRouteRef = CFDictionaryGetValue(routeChangeDictionary, CFSTR (kAudioSession_AudioRouteChangeKey_OldRoute)); 
NSString *oldRouteString = (__bridge NSString *)oldRouteRef; 

if (routeChangeReason == kAudioSessionRouteChangeReason_OldDeviceUnavailable) { 
    if ((controller.playbackState == MPMusicPlaybackStatePlaying) && 
     (([oldRouteString isEqualToString:@"Headphone"]) || 
     ([oldRouteString isEqualToString:@"LineOut"]))) 
    { 
     // Janking out the headphone will stop the audio. 
     [controller pause]; 
    } 
} 
관련 문제