最近的项目中音频在线播放功能使用的是AudioStreamer,测试电话打进时的打断是遇到了个问题,总是在下面的位置崩溃:
#if TARGET_OS_IPHONE
//
// ASAudioSessionInterruptionListener
//
// Invoked if the audio session is interrupted (like when the phone rings)
//
static void ASAudioSessionInterruptionListener(void *inClientData, UInt32 inInterruptionState)
{
AudioStreamer* streamer = (AudioStreamer *)inClientData;
[streamer handleInterruptionChangeToState:inInterruptionState];
}
#endif
我只是设置了个断点进行调试,发现streamer变量的地址不正确,也没打开内存栈来仔细调试查看,但肯定是这个变量的问题。 索性把这两行代码注释掉。自己实现AVAudioSessionDelegate的方法。 当有电话打进的时候,这里可以处理将正在播放的音乐停止,然后打完电话后再重新播放
- (void)beginInterruption
{
//停止播放的事件
}
- (void)endInterruption
{
//继续播放的事件
}