最近在学习用pjsip开发网络电话,中间遇到了各种问题,现把解决方法记录下来。
- (void)setSpeaker:(BOOL)isOpen
{
UInt32 route;
OSStatus error;
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord;
error = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
route = isOpen ? kAudioSessionOverrideAudioRoute_Speaker : kAudioSessionOverrideAudioRoute_None;
error = AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(route), &route);
}
AudioSessionSetProperty这个方法在iOS7以后已经废弃掉了,编译时会警告,但是仍然可以用。可能因为是个人习惯,不太喜欢项目通篇报黄色警告,所以写了一个iOS7以后可以用的方法,需要用到AVAudioSession这个类,需要引入AVFoundation.framework。其中AVaudioSessionPortOverrideNone是听筒播放语音流,AVaudioSessionPortOverrideSpeaker是扬声器播放。
-(void)receive:(BOOL)isSpeaker{
NSLog(@"