diff --git a/res/values/non_localizable_strings.xml b/res/values/non_localizable_strings.xml index c427191b4..0c92b2e4a 100644 --- a/res/values/non_localizable_strings.xml +++ b/res/values/non_localizable_strings.xml @@ -78,6 +78,7 @@ pref_codec_silk24_key pref_codecs_key pref_stun_server_key + pref_ice_enable_key pref_video_codec_vp8_key pref_media_encryption_key none diff --git a/res/values/strings.xml b/res/values/strings.xml index 736abc9d5..7c7279028 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -214,6 +214,8 @@ Removes the echo heard by other end (not recommended) Removes the echo heard by other end (brute force method) Stun server + Enable ICE + A STUN server must be configured to use ICE Calibrating... Calibrated [%s ms] failed diff --git a/res/xml-v14/preferences.xml b/res/xml-v14/preferences.xml index 1c34388fb..72f417abc 100644 --- a/res/xml-v14/preferences.xml +++ b/res/xml-v14/preferences.xml @@ -52,7 +52,15 @@ - + + + + + diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index f24e9cdc2..069322d6e 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -688,8 +688,13 @@ public final class LinphoneManager implements LinphoneCoreListener { //stun server String lStun = getPrefString(R.string.pref_stun_server_key, null); + boolean useICE = getPrefBoolean(R.string.pref_ice_enable_key, false); mLc.setStunServer(lStun); - mLc.setFirewallPolicy((lStun!=null && lStun.length()>0) ? FirewallPolicy.UseStun : FirewallPolicy.NoFirewall); + if (lStun!=null && lStun.length()>0) { + mLc.setFirewallPolicy(useICE ? FirewallPolicy.UseIce : FirewallPolicy.UseStun); + } else { + mLc.setFirewallPolicy(FirewallPolicy.NoFirewall); + } //accounts try {