为什么我的声音音量会下降?

时间:2014-10-16 12:03:04

标签: ios objective-c ios7 ios8

我有一个voip应用程序,对于来电,我重定向到一个单独的视图,用户可以接受或拒绝来电。我希望在此视图中播放声音,因此我加载声音文件:

NSString *ringtoneSoundPath = [[NSBundle mainBundle] pathForResource:@"ringtone" ofType:@"wav"];
NSURL *ringtoneSoundUrl = [NSURL fileURLWithPath:ringtoneSoundPath];
ringtone = [[AVAudioPlayer alloc] initWithContentsOfURL:ringtoneSoundUrl error:nil];
ringtone.numberOfLoops = -1;

然后在我希望播放声音的viewcontroller中我有这些方法:

- (void)viewWillAppear:(BOOL)animated {
    [ringtone play];
}

- (void)viewWillDisappear:(BOOL)animated {
    [ringtone stop];
}

这是有效的,但是当通话完成后我再次拨打声音的音量突然非常低。我检查了设备的音量设置,但它仍处于最大值。为什么在停止声音然后再次播放时音量会下降?它不会重复,所以第三次,它就像第二次一样低。

1 个答案:

答案 0 :(得分:0)

我们遇到了类似的问题。如果你有voip app,则意味着你在setCategory:中使用了AVAudioSession。 所以,你有这样的代码:

AVAudioSession *aSession = [AVAudioSession sharedInstance];
if ([aSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]) {
    [aSession setMode:AVAudioSessionModeVoiceChat error:nil];
    [aSession setActive: YES error:nil];
}

但是当你使用AVAudioSessionCategoryPlayAndRecord时,音量会变低。

所以,在响铃之前你应该设置例如:

if ([aSession setCategory:AVAudioSessionCategoryPlayback error:nil]) {
    [aSession setMode:AVAudioSessionModeDefault error:nil];
    [aSession setActive:YES error:nil];
}

希望这有帮助