AVAudioSessionCategoryPlayAndRecord
示例:
//来电声音提醒
NSURL *filePath = [[NSBundle mainBundle] URLForResource: @"videoRing" withExtension: @"caf"];
voipSound_ = [[AVAudioPlayer alloc]initWithContentsOfURL:filePath error:nil];
voipSound_.numberOfLoops = -1;//为-1 是无限数
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
/**************************铃声说明************************
1.视频通话来电或去电 2.音频通话来电 这两种情况都采用扬声器播放铃声
3.音频去电 这种情况采用听筒播放铃声
*********************************************************/
NSError *error = nil;
if (bIsVideoCall_ || isIncomingCall)
{
//扬声器播放
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];
bSpeakerAudio_ = YES;
}
else
{
//听筒播放
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error];
bSpeakerAudio_ = NO;
}
[voipSound_ play];
#pragma mark --- 控制扩音器的打开和关闭 为1的时候是打开的。
- (IBAction)speak:(id)sender
{
bSpeakerAudio_ = !bSpeakerAudio_;
NSError *error = nil;
if (bSpeakerAudio_)
{
if (iPhone6Plus) {
[self.speakBtn setImage:[UIImage imageNamed:@"hf_btn_handfree"] forState:UIControlStateNormal];
}else
{
[self.speakBtn setImage:[UIImage imageNamed:@"bohao_btn_handfree_pre"] forState:UIControlStateNormal];
}
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];
}
else
{
if (iPhone6Plus) {
[self.speakBtn setImage:[UIImage imageNamed:@"hf_btn_handfree_nm"] forState:UIControlStateNormal];
}else
{
[self.speakBtn setImage:[UIImage imageNamed:@"bohao_btn_handfree_nm"] forState:UIControlStateNormal];
}
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error];
}
}