我在SO上发现了一个关于同一问题的问题,但仍然没有答案。 AVAudioPlayer affects system sounds
AVAudioSessionCategoryAmbient不是答案,因为它只允许应用程序与其他应用程序的音频同时播放音频,不是这样。
我使用SystemSound播放按钮点击声音等声音效果,使用AVAudioPlayer播放背景音乐。当AVAudioPlayer在播放SystemSound时启动时,该特定系统声音突然变得大5倍。还有其他人经历过吗?可能有什么问题?
这些是在SoundControl.m中,我在转换后正在玩gameBG。
-(void)gameBG {
self.sharedSoundControl = [SoundControl sharedSoundControl];
if (self.sharedSoundControl.musicOff == NO) {
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"bgm" withExtension:@"mp3"] error:nil];
self.audioPlayer.numberOfLoops = -1;
self.audioPlayer.volume = 0.3f;
[self.audioPlayer play];
}}
-(void)transition {
if (self.sharedSoundControl.effectOff == NO) {
NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"transition" ofType:@"caf"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:soundPath], &soundID);
AudioServicesPlaySystemSound(soundID);
}}
修改
刚刚意识到如果AVAudioPlayer的另一个实例已经在任何地方播放,则不会发生此类行为。它发生在没有活动的AVAudioPlayer并且您播放系统声音后接着AVAudioPlayer然后瞧,您刚播放的系统声音突然变得非常响亮。
我在想,如果我没有得到答案,我就必须在播放系统声音之前播放一些随机静音的AVAudioPlayer,这样就不会发生但是我希望得到一些“真正的”修复这个。 请不要建议在播放系统声音之前播放一些随机静音的AVAudioPlayer,因为这就是我刚才所说的..