我正在尝试在插入耳机时将音频路由到耳机,并在没有连接耳机时通过iPhone扬声器播放。
我尝试了以下
AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, audioRouteChangeListenerCallback, nil);
void audioRouteChangeListenerCallback (
void *inUserData,
AudioSessionPropertyID inPropertyID,
UInt32 inPropertyValueSize,
const void *inPropertyValue
) {
DetailViewController *controller = (__bridge_transfer DetailViewController *) inUserData;
if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return;
CFDictionaryRef routeChangeDictionary = (CFDictionaryRef)inPropertyValue;
CFNumberRef routeChangeReasonRef = (CFNumberRef)CFDictionaryGetValue (routeChangeDictionary, CFSTR (kAudioSession_AudioRouteChangeKey_Reason) );
SInt32 routeChangeReason;
CFNumberGetValue (routeChangeReasonRef, kCFNumberSInt32Type, &routeChangeReason);
if (routeChangeReason == kAudioSessionRouteChangeReason_OldDeviceUnavailable) {
NSLog(@"UnPlugged");
[controller headphoneIsPlugged];
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute, sizeof (audioRouteOverride),&audioRouteOverride);
} else if (routeChangeReason == kAudioSessionRouteChangeReason_NewDeviceAvailable) {
NSLog(@"Plugged in");
}
}
根本没有调用功能耳机。该计划甚至没有进入该部分的那一部分。
现在,当我插上耳机时,音频停止播放,没有通过扬声器播放音频。
在audiolister内部,我试图提出以下内容 [controller.avplayer play]; 但仍然没有发生任何事情。请帮忙
答案 0 :(得分:0)
添加侦听器时,需要传递DetailViewController
的实例。这将作为用户数据传递。没有这个(__bridge_transfer DetailViewController *) inUserData;
将返回nil。
如果您在DetailViewController
:
AudioSessionAddPropertyListener ( kAudioSessionProperty_AudioRouteChange, audioRouteChangeListenerCallback, (__bridge void *)(self) );