Che*_*Lai 16 iphone ipod audio-player
我目前正在开展一个项目,涉及在应用内部播放来自iphone音乐库的音乐.我正在使用MPMediaPickerController来允许用户选择他们的音乐并使用iPhone内的iPod音乐播放器播放它.
然而,当用户插入耳机并将其移除时,我遇到了问题.音乐将无缘无故地突然停止播放.经过一些测试后,我发现当用户从设备上拔下耳机时,iPod播放器会暂停播放.那么有没有办法以编程方式检测耳机是否已拔下,以便我可以继续播放音乐?或者有什么方法可以防止iPod播放器在用户拔下耳机时暂停?
您应该注册AudioRoute更改通知并实现您希望如何处理路由更改
// Registers the audio route change listener callback function
AudioSessionAddPropertyListener (kAudioSessionProperty_AudioRouteChange,
audioRouteChangeListenerCallback,
self);
Run Code Online (Sandbox Code Playgroud)
在回调中,您可以获得路由更改的原因
CFDictionaryRef routeChangeDictionary = inPropertyValue;
CFNumberRef routeChangeReasonRef =
CFDictionaryGetValue (routeChangeDictionary,
CFSTR (kAudioSession_AudioRouteChangeKey_Reason));
SInt32 routeChangeReason;
CFNumberGetValue (routeChangeReasonRef, kCFNumberSInt32Type, &routeChangeReason);
if (routeChangeReason == kAudioSessionRouteChangeReason_OldDeviceUnavailable)
{
// Headset is unplugged..
}
if (routeChangeReason == kAudioSessionRouteChangeReason_NewDeviceAvailable)
{
// Headset is plugged in..
}
Run Code Online (Sandbox Code Playgroud)