| | |
| | | name:AVAudioSessionRouteChangeNotification |
| | | object:nil]; |
| | | |
| | | NSString *path = [[NSBundle mainBundle] pathForResource:@"msg" ofType:@"wav"]; |
| | | NSString *path = [[NSBundle mainBundle] pathForResource:@"msg" ofType:@"caf"]; |
| | | self.messagePlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:path] error:nil]; |
| | | |
| | | _sounds.vibrate = kSystemSoundID_Vibrate; |
| | |
| | | withDefault:@"sip.linphone.org"] |
| | | .UTF8String) != 0) { |
| | | // LOGI(@"Migrating proxy config to use AVPF"); |
| | | linphone_proxy_config_enable_avpf(proxy, TRUE); |
| | | // linphone_proxy_config_enable_avpf(proxy, TRUE); |
| | | linphone_proxy_config_set_avpf_mode(proxy,LinphoneAVPFEnabled); |
| | | } |
| | | proxies = proxies->next; |
| | | } |
| | |
| | | NSError *err = nil; |
| | | |
| | | if (![audioSession setActive:NO error:&err] && err) { |
| | | |
| | | NSLog(@"audioå¯å¨å¤±è´¥"); |
| | | err = nil; |
| | | } |
| | | if (!bAudioInputAvailable) { |
| | | |
| | | NSLog(@"设å¤ä¸æ¯æaudio"); |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | // set transport |
| | | NSString *type = @"UDP"; |
| | | // NSString *type = @"TCP"; |
| | | linphone_proxy_config_set_route( |
| | | config, |
| | | [NSString stringWithFormat:@"%s;transport=%s", domain.UTF8String, type.lowercaseString.UTF8String] |
| | |
| | | #pragma mark Debug functions |
| | | |
| | | + (void)dumpLcConfig { |
| | | if (theLinphoneCore) { |
| | | LpConfig *conf = HDLLinphoneManager.instance.configDb; |
| | | char *config = lp_config_dump(conf); |
| | | // LOGI(@"\n%s", config); |
| | | ms_free(config); |
| | | } |
| | | // if (theLinphoneCore) { |
| | | // LpConfig *conf = HDLLinphoneManager.instance.configDb; |
| | | // char *config = lp_config_dump(conf); |
| | | //// LOGI(@"\n%s", config); |
| | | // ms_free(config); |
| | | // } |
| | | } |
| | | |
| | | #pragma mark - Logs Functions handlers |
| | |
| | | // NSString *address = [FastAddressBook displayNameForAddress:addr]; |
| | | NSString *address=@""; |
| | | if (state == LinphoneCallIncomingReceived) { |
| | | |
| | | HDLLinPhoneSDK.instance.IsIncomingReceivedCallState=true; |
| | | [HDLLinphoneManager.instance enableMicro:true]; |
| | | |
| | | // LinphoneCallLog *callLog = linphone_call_get_call_log(call); |
| | | // NSString *callId = [NSString stringWithUTF8String:linphone_call_log_get_call_id(callLog)]; |
| | | // int index = [(NSNumber *)[_pushDict objectForKey:callId] intValue] - 1; |
| | |
| | | |
| | | if (state==LinphoneCallStateOutgoingProgress) { |
| | | NSLog(@"ç¦æ¢éº¦å
é£"); |
| | | [HDLLinphoneManager.instance enableMicro:false]; |
| | | // [HDLLinphoneManager.instance enableMicro:false]; |
| | | } |
| | | // Disable speaker when no more call |
| | | if ((state == LinphoneCallEnd || state == LinphoneCallError)) { |
| | |
| | | linphone_core_cbs_set_user_data(cbs, (__bridge void *)(self)); |
| | | // NSLog(@"Creating linphonecore1:%@",_configDb); |
| | | |
| | | lp_config_set_int(_configDb, [@"app" UTF8String], [@"random_port_preference" UTF8String], 1); |
| | | |
| | | // lp_config_set_int(_configDb, [@"app" UTF8String], [@"random_port_preference" UTF8String], 1); |
| | | linphone_config_set_int(_configDb, [@"app" UTF8String], [@"random_port_preference" UTF8String], 1); |
| | | |
| | | theLinphoneCore = linphone_factory_create_core_with_config_3(factory, _configDb, NULL); |
| | | linphone_core_add_callbacks(theLinphoneCore, cbs); |
| | | linphone_core_start(theLinphoneCore); |
| | | // linphone_core_start(theLinphoneCore); |
| | | //è®¾ç½®ä¸ºéæºç«¯å£ |
| | | LinphoneSipTransports transportValue = {-1, -1, -1, -1}; |
| | | // will also update the sip_*_port section of the config |
| | | if (linphone_core_set_sip_transports(theLinphoneCore, &transportValue)) { |
| | | LOGE(@"cannot set transport"); |
| | | NSLog(@"cannot set transport"); |
| | | } |
| | | // |
| | | linphone_core_set_network_reachable(theLinphoneCore,TRUE); |
| | | // |
| | | // AudioStream*stream=audio_stream_new(ms_factory_new(), -1, -1, TRUE); |
| | | // audio_stream_enable_gain_control(stream, TRUE); |
| | | |
| | | linphone_core_start(theLinphoneCore); |
| | | |
| | | |
| | | [self removeAllAccounts]; |
| | | // Let the core handle cbs |
| | |
| | | // start scheduler |
| | | mIterateTimer = |
| | | [NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(iterate) userInfo:nil repeats:YES]; |
| | | |
| | | |
| | | // //èªå¨å¯å¨åæ¥æ¶video |
| | | // NSLog(@"设置èªå¨è®¾ç½®"); |
| | | // LinphoneVideoPolicy policy; |
| | | // policy.automatically_initiate = true; |
| | | // policy.automatically_accept =true; |
| | | // linphone_core_set_video_policy(theLinphoneCore, &policy); |
| | | // LinphoneVideoActivationPolicy policy; |
| | | // linphone_video_activation_policy_set_automatically_accept(&policy,true); |
| | | } |
| | | |
| | | //-(void)appWillTerminate{ |
| | |
| | | } |
| | | |
| | | - (void)migrateImportantFiles { |
| | | if ([HDLLinphoneManager copyFile:[HDLLinphoneManager documentFile:@"linphonerc"] destination:[HDLLinphoneManager preferenceFile:@"linphonerc"] override:TRUE ignore:TRUE]) |
| | | [NSFileManager.defaultManager |
| | | removeItemAtPath:[HDLLinphoneManager documentFile:@"linphonerc"] |
| | | error:nil]; |
| | | // if ([HDLLinphoneManager copyFile:[HDLLinphoneManager documentFile:@"linphonerc"] destination:[HDLLinphoneManager preferenceFile:@"linphonerc"] override:TRUE ignore:TRUE]) |
| | | // [NSFileManager.defaultManager |
| | | // removeItemAtPath:[HDLLinphoneManager documentFile:@"linphonerc"] |
| | | // error:nil]; |
| | | //ä¸ä½¿ç¨é
ç½®æä»¶çé
ç½® |
| | | NSFileManager *fileManager = NSFileManager.defaultManager; |
| | | NSError *error = nil; |
| | | [fileManager removeItemAtPath:[HDLLinphoneManager preferenceFile:@"linphonerc"] error:&error]; |
| | | |
| | | |
| | | if ([HDLLinphoneManager copyFile:[HDLLinphoneManager documentFile:@"linphone_chats.db"] destination:[HDLLinphoneManager dataFile:@"linphone_chats.db"] override:TRUE ignore:TRUE]) |
| | | [NSFileManager.defaultManager |
| | |
| | | LOGW(@"%@ already exists, simply removing %@ %@", dst, src, |
| | | fileError ? fileError.localizedDescription : @"successfully"); |
| | | } else { |
| | | [fileManager moveItemAtPath:src toPath:dst error:&fileError]; |
| | | // [fileManager moveItemAtPath:src toPath:dst error:&fileError]; |
| | | LOGI(@"%@ moving to %@ %@", dst, src, fileError ? fileError.localizedDescription : @"successfully"); |
| | | } |
| | | } |
| | |
| | | src = srcIpad; |
| | | } |
| | | NSString *dst = [HDLLinphoneManager preferenceFile:@"linphonerc"]; |
| | | [HDLLinphoneManager copyFile:src destination:dst override:FALSE ignore:FALSE]; |
| | | // [HDLLinphoneManager copyFile:src destination:dst override:FALSE ignore:FALSE]; |
| | | } |
| | | |
| | | - (void)overrideDefaultSettings { |
| | |
| | | // factory = factoryIpad; |
| | | // } |
| | | NSString *confiFileName = [HDLLinphoneManager preferenceFile:@"linphonerc"]; |
| | | _configDb = lp_config_new_with_factory([confiFileName UTF8String], [factory UTF8String]); |
| | | |
| | | _configDb = linphone_config_new_with_factory([confiFileName UTF8String], [factory UTF8String]); |
| | | |
| | | } |
| | | #pragma mark - Audio route Functions |
| | | |
| | |
| | | } |
| | | } |
| | | linphone_address_destroy(addr); |
| | | linphone_call_params_destroy(lcallParams); |
| | | // linphone_call_params_destroy(lcallParams); |
| | | linphone_call_params_unref(lcallParams); |
| | | |
| | | return TRUE; |
| | | } |
| | |
| | | } |
| | | |
| | | - (void)configureVbrCodecs { |
| | | PayloadType *pt; |
| | | int bitrate = lp_config_get_int( |
| | | _configDb, "audio", "codec_bitrate_limit", |
| | | kLinphoneAudioVbrCodecDefaultBitrate); /*default value is in linphonerc or linphonerc-factory*/ |
| | | const MSList *audio_codecs = linphone_core_get_audio_codecs(theLinphoneCore); |
| | | const MSList *codec = audio_codecs; |
| | | while (codec) { |
| | | pt = codec->data; |
| | | if (linphone_core_payload_type_is_vbr(theLinphoneCore, pt)) { |
| | | linphone_core_set_payload_type_bitrate(theLinphoneCore, pt, bitrate); |
| | | } |
| | | codec = codec->next; |
| | | } |
| | | // PayloadType *pt; |
| | | // int bitrate = linphone_config_get_int( |
| | | // _configDb, "audio", "codec_bitrate_limit", |
| | | // kLinphoneAudioVbrCodecDefaultBitrate); /*default value is in linphonerc or linphonerc-factory*/ |
| | | // const MSList *audio_codecs = linphone_core_get_audio_codecs(theLinphoneCore); |
| | | // const MSList *codec = audio_codecs; |
| | | // while (codec) { |
| | | // pt = codec->data; |
| | | // if (linphone_core_payload_type_is_vbr(theLinphoneCore, pt)) { |
| | | // linphone_core_set_payload_type_bitrate(theLinphoneCore, pt, bitrate); |
| | | // } |
| | | // codec = codec->next; |
| | | // } |
| | | |
| | | PayloadType *pt; |
| | | int bitrate = linphone_config_get_int( |
| | | _configDb, "audio", "codec_bitrate_limit", |
| | | kLinphoneAudioVbrCodecDefaultBitrate); /*default value is in linphonerc or linphonerc-factory*/ |
| | | const MSList *audio_codecs = linphone_core_get_audio_payload_types(theLinphoneCore); |
| | | const MSList *codec = audio_codecs; |
| | | while (codec) { |
| | | pt = codec->data; |
| | | if (linphone_core_payload_type_is_vbr(theLinphoneCore, pt)) { |
| | | linphone_core_set_payload_type_bitrate(theLinphoneCore, pt, bitrate); |
| | | } |
| | | codec = codec->next; |
| | | } |
| | | } |
| | | |
| | | + (id)getMessageAppDataForKey:(NSString *)key inMessage:(LinphoneChatMessage *)msg { |
| | |
| | | - (void)lpConfigSetString:(NSString *)value forKey:(NSString *)key inSection:(NSString *)section { |
| | | if (!key) |
| | | return; |
| | | lp_config_set_string(_configDb, [section UTF8String], [key UTF8String], value ? [value UTF8String] : NULL); |
| | | // lp_config_set_string(_configDb, [section UTF8String], [key UTF8String], value ? [value UTF8String] : NULL); |
| | | linphone_config_set_string(_configDb, [section UTF8String], [key UTF8String], value ? [value UTF8String] : NULL); |
| | | |
| | | } |
| | | - (NSString *)lpConfigStringForKey:(NSString *)key { |
| | | return [self lpConfigStringForKey:key withDefault:nil]; |
| | |
| | | - (NSString *)lpConfigStringForKey:(NSString *)key inSection:(NSString *)section withDefault:(NSString *)defaultValue { |
| | | if (!key) |
| | | return defaultValue; |
| | | const char *value = lp_config_get_string(_configDb, [section UTF8String], [key UTF8String], NULL); |
| | | // const char *value = lp_config_get_string(_configDb, [section UTF8String], [key UTF8String], NULL); |
| | | const char *value = linphone_config_get_string(_configDb, [section UTF8String], [key UTF8String], NULL); |
| | | return value ? [NSString stringWithUTF8String:value] : defaultValue; |
| | | } |
| | | |
| | |
| | | - (void)lpConfigSetInt:(int)value forKey:(NSString *)key inSection:(NSString *)section { |
| | | if (!key) |
| | | return; |
| | | lp_config_set_int(_configDb, [section UTF8String], [key UTF8String], (int)value); |
| | | linphone_config_set_int(_configDb, [section UTF8String], [key UTF8String], (int)value); |
| | | } |
| | | - (int)lpConfigIntForKey:(NSString *)key { |
| | | return [self lpConfigIntForKey:key withDefault:-1]; |
| | |
| | | - (int)lpConfigIntForKey:(NSString *)key inSection:(NSString *)section withDefault:(int)defaultValue { |
| | | if (!key) |
| | | return defaultValue; |
| | | return lp_config_get_int(_configDb, [section UTF8String], [key UTF8String], (int)defaultValue); |
| | | return linphone_config_get_int(_configDb, [section UTF8String], [key UTF8String], (int)defaultValue); |
| | | } |
| | | |
| | | - (void)lpConfigSetBool:(BOOL)value forKey:(NSString *)key { |