我有一个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];
}
这是有效的,但是当通话完成后我再次拨打声音的音量突然非常低。我检查了设备的音量设置,但它仍处于最大值。为什么在停止声音然后再次播放时音量会下降?它不会重复,所以第三次,它就像第二次一样低。
答案 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];
}
希望这有帮助