根据您的音频停止的方式(您打电话了[self.audioPlayer stop]
吗?),您可能需要在再次拨打电话[self.audioPlayer prepareToPlay]
之前先拨打电话play
。
我相信你应该做的是以下几点:
-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)audioPlayer;
{
[self.audioPlayer 暂停];
}
-(void)audioPlayerEndInterruption:(AVAudioPlayer *)audioPlayer;
{
[self.audioPlayer 播放];
}
根据我的经验,如果您打电话给stop
您,那么您必须先打电话,然后prepareToPlay
才能再次打电话play
。
编辑:
或者,您可能需要直接通过 AudioSession 处理中断。
您的应用程序应该初始化 AudioSession,如下所示:
AudioSessionInitialize(NULL, NULL, AudioInterruptionListener, NULL);
然后,在/块AudioInterruptionListener
之外实现,如下所示:@implementation
@end
#define kAudioEndInterruption @"AudioEndInterruptionNotification"
#define kAudioBeginInterruption @"AudioBeginInterruptionNotification"
无效的音频中断监听器(
无效 *inClientData,
UInt32 inInterruptionState
)
{
NSString *notificationName = nil;
开关(inInterruptionState){
案例 kAudioSessionEndInterruption:
通知名称 = kAudioEndInterruption;
休息;
案例 kAudioSessionBeginInterruption:
通知名称 = kAudioBeginInterruption;
休息;
默认:
休息;
}
如果(通知名称){
NSNotification *notice = [NSNotification notificationWithName:notificationName object:nil];
[[NSNotificationCenter defaultCenter] postNotification:notice];
}
}
回到您的 Objective-C 中,您需要监听此代码可能发布的通知,如下所示:
// 监听音频中断开始/结束
[[NSNotificationCenter defaultCenter] addObserver:self
选择器:@选择器(开始音频中断:)
名称:kAudioBeginInterruption 对象:无];
[[NSNotificationCenter defaultCenter] addObserver:self
选择器:@selector(endAudioInterruption:)
名称:kAudioEndInterruption 对象:无];
和:
-(void)beginAudioInterruption:(id)context
{
[self.audioPlayer 暂停];
}
-(void)endAudioInterruption:(id)context
{
[self.audioPlayer 播放];
}
试一试。:-)