当iPhone音量调至静音时,音频仍在播放。

10
我目前在我的应用程序中播放背景音乐和其他声音的方式表现得非常奇怪:
- 关闭背景音乐时,播放的其他声音要响得多。 - 打开背景音乐后,音频要弱得多。 - 甚至可以在声音播放时打开音乐,声音会变得更弱。 最奇怪的部分是: 当iPhone的音量被调低到最低(静音)时,根本就不应该有任何声音。打开背景音乐但没有设备音量时,它的表现符合预期 - 您听不到音乐或声音效果。但是如果关闭背景音乐,即使设备已经完全静音,声音效果仍然会播放并且相当大声!
这是我的代码... 对于我的背景音乐:
AVAudioPlayer *musicPlayer;

- (void)playMusic {
    if (musicPlayer == nil) {
        NSURL *musicPath = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"SongFile" ofType:@"mp3"]];
        musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicPath error:nil];
        musicPlayer.volume = 0.2f;
        musicPlayer.numberOfLoops = -1;
    }
    [musicPlayer play];
}

- (void)stopMusic {
    [musicPlayer stop];
}

关于游戏中声音的问题:

#import "SoundEffect.h"
SoundEffect *sounds;

- (void)playSoundWithInfo:(NSString *)sound; {
    NSString *path = [[NSBundle mainBundle] pathForResource:sound ofType:@"caf"];
    sounds = nil;
    sounds = [[SoundEffect alloc] initWithContentsOfFile:path];
    [sounds play];
}
任何想法都将不胜感激。

你在更多的设备上测试过吗?它在不同的设备上表现一致吗? - Jesse Black
这种情况在iPad上(第一代,iOS 5)不会发生。那是迄今为止我能够测试的唯一其他设备。发生这种情况的iPhone也是iOS 5。 - RanLearns
这会让你的问题得到一个赞。 确实感觉像是设备出了问题。 - Jesse Black
你的AVAudioSessionCategory设置为什么? - axiixc
没有看到你的代码,我不知道,但是建议阅读以下内容:https://dev59.com/9UrSa4cB1Zd3GeqPTRXb - Stephen J
2个回答

1
也许是因为您在使用AVAudioPlayer播放音乐,而使用SystemSounds来重现声音效果。AVAudioPlayer的音量设置在应用程序中,但SystemSounds的音量设置是系统音量。

0
你需要在应用程序中使用 AVAudioPlayerMPMediaPlayer 播放声音之前设置你的 AVAudioSession,并根据你想要的音频交互方式选择不同的类别。虽然我不知道为什么即使音量为零音乐仍会播放,但其他问题似乎来自于你不想要的 AVAudioSessionCategory 设置。在应用程序初始化或任何开始播放声音的地方,尝试以下代码:
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];

这段代码初始化了AVAudioSession并将其设置为一种类别,其中声音不会与其他背景声混合(一旦您激活会话,它们将停止),而且您的应用程序具有优先权。请注意,屏幕锁定和静音开关仍然允许播放声音(以其全音量)。我相信您可以专门设置它,但我不知道确切的代码。

如果您想要不同的音频行为,请查看Apple的AVAudioSession类文档中您可以进行设置的其他类别。其他选项包括:

AVAudioSessionCategoryAmbient;
AVAudioSessionCategorySoloAmbient;
AVAudioSessionCategoryPlayback;
AVAudioSessionCategoryRecord;
AVAudioSessionCategoryPlayAndRecord;
AVAudioSessionCategoryAudioProcessing;

无论如何,希望音频会话问题引起了这些问题。如果有效,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接