헤드폰이 연결되어 있어도 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];
}
}