AudioQueueStart发布消息,以杀死mediaserverd
我有一个钢琴应用程序。 这工作正常,有一点点错误。 如果我在同一时间快速播放几个键,则声音会消失几秒钟,并在控制台中收到以下消息
AudioQueueStart发布消息,以杀死mediaserverd
这是相关的代码:
-(IBAction)playNoteFromKeyTouch:(id) sender{ [NSThread detachNewThreadSelector:@selector(playNote:) toTarget:self withObject:[NSString stringWithFormat:@"Piano.mf.%@",[sender currentTitle]]]; } -(void)playNote:(NSString *) note{ NSError *err; NSString *path = [[NSBundle mainBundle] pathForResource:note ofType:@"aiff"]; AVAudioPlayer *p = [[AVAudioPlayer alloc ] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&err]; p.delegate = self; if (err) { NSLog(@"%@", err); }else{ [p prepareToPlay]; [p play]; } } - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag { [player release]; }
我已经用仪器testing过,没有任何内存泄漏。 如果有人可以有一个想法,以避免这个错误,将不胜感激。
我遭受类似的问题。
我花了很多年试图解决这个问题,我认为我的特殊问题发生在以下情况:
- 我处于AudioCategory中,静音开关打开时不允许播放声音。
- 我开始玩一个声音(我其实不这样做的应用程序,但这是我如何可靠地重现)。
- 当声音仍在播放时,我切换到另一个AudioCategory,在静音开关打开时不允许播放声音。
从这一点开始,我从AudioSession API中的调用中的各个点看到'发送消息来终止mediaserverd'。 应用程序挂起,设备挂起,我很难让设备恢复到正常运行状态。
根据这个消息 它是设备的静音开关。
事实certificate,通过设备的物理开关使iPad静音导致了我的应用程序的问题。 只要button没有打开,问题就不会发生。
啧。 如何以编程方式重写?
我用SoundBankPlayer而不是AVAudioPlayer“解决”了这个问题。 SoundBanker信息 。