2014-10-16 48 views
0

我有一个voip应用程序和来电我重定向到一个单独的视图,用户可以接受或拒绝通话。我想在这个观点,所以我加载声音文件中的声音进行播放:为什么我的声音音量下降?

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

,然后在我想要播放的声音视图控制器我有以下方法:

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

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

这有效,但是当通话结束,我再次打电话时,声音的音量突然很低。我检查了设备的音量设置,但仍然是最大。为什么在停止声音并再次播放时音量会下降?它没有重复,所以第三次,它和第二次一样低。

+0

使用[audioPlayer setVolume:1.0];同时播放声音。 – ASHISHT 2014-10-16 12:13:06

+0

@ASHISHT这使声音根本不起作用 – Kevin 2014-10-16 12:41:41

回答

0

我们有类似的问题。如果您有voip应用程序,则意味着您在AVAudioSession中使用setCategory:。 所以,你有这样的代码:

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

但是当你使用AVAudioSessionCategoryPlayAndRecord体积变低。

所以,在rington玩你应该设置例如为:

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

希望这有助于