diff --git a/libs/armeabi-v7a/liblinphone.so b/libs/armeabi-v7a/liblinphone.so index 4bf67026e..aa455a81b 100755 Binary files a/libs/armeabi-v7a/liblinphone.so and b/libs/armeabi-v7a/liblinphone.so differ diff --git a/libs/armeabi/liblinphone.so b/libs/armeabi/liblinphone.so index 6609be864..6406125bf 100755 Binary files a/libs/armeabi/liblinphone.so and b/libs/armeabi/liblinphone.so differ diff --git a/res/values/strings.xml b/res/values/strings.xml index e0680a7da..5f2cedd30 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -68,4 +68,6 @@ fails to register to %s started Removes the echo heared by the other end. +Stun server +pref_stun_server_key diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index f5210a697..4bd4c821c 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -12,6 +12,7 @@ + diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java index e9317dbc2..ca0ce7283 100644 --- a/src/org/linphone/LinphoneService.java +++ b/src/org/linphone/LinphoneService.java @@ -38,6 +38,7 @@ import org.linphone.core.LinphoneFriend; import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.PayloadType; import org.linphone.core.LinphoneCall.State; +import org.linphone.core.LinphoneCore.FirewallPolicy; import org.linphone.core.LinphoneCore.GlobalState; @@ -333,7 +334,12 @@ public class LinphoneService extends Service implements LinphoneCoreListener { throw new LinphoneConfigException(getString(R.string.wrong_domain)); } + String lStun = mPref.getString(getString(R.string.pref_stun_server_key), null); + //stun server + mLinphoneCore.setStunServer(lStun); + mLinphoneCore.setFirewallPolicy(lStun!=null ? FirewallPolicy.UseStun : FirewallPolicy.NoFirewall); + //auth mLinphoneCore.clearAuthInfos(); LinphoneAuthInfo lAuthInfo = LinphoneCoreFactory.instance().createAuthInfo(lUserName, lPasswd,null); diff --git a/src/org/linphone/core/LinphoneCoreImpl.java b/src/org/linphone/core/LinphoneCoreImpl.java index 99be0fb2b..1f389a608 100644 --- a/src/org/linphone/core/LinphoneCoreImpl.java +++ b/src/org/linphone/core/LinphoneCoreImpl.java @@ -69,12 +69,16 @@ class LinphoneCoreImpl implements LinphoneCore { private native void setPreviewWindowId(long nativePtr, Object wid); private AndroidVideoWindowImpl mVideoWindow; private AndroidVideoWindowImpl mPreviewWindow; - private native void addFriend(long nativePtr,long friend); private native void setPresenceInfo(long nativePtr,int minute_away, String alternative_contact,int status); private native long createChatRoom(long nativePtr,String to); private native void enableVideo(long nativePtr,boolean vcap_enabled,boolean display_enabled); private native boolean isVideoEnabled(long nativePtr); + private native void setFirewallPolicy(long nativePtr, int enum_value); + private native int getFirewallPolicy(long nativePtr); + private native void setStunServer(long nativePtr, String stun_server); + private native String getStunServer(long nativePtr); + private static String TAG = "LinphoneCore"; LinphoneCoreImpl(LinphoneCoreListener listener, File userConfig,File factoryConfig,Object userdata) throws IOException { @@ -335,4 +339,16 @@ class LinphoneCoreImpl implements LinphoneCore { public boolean isVideoEnabled() { return isVideoEnabled(nativePtr); } + public FirewallPolicy getFirewallPolicy() { + return FirewallPolicy.fromInt(getFirewallPolicy(nativePtr)); + } + public String getStunServer() { + return getStunServer(nativePtr); + } + public void setFirewallPolicy(FirewallPolicy pol) { + setFirewallPolicy(nativePtr,pol.value()); + } + public void setStunServer(String stunServer) { + setStunServer(nativePtr,stunServer); + } } diff --git a/submodules/linphone b/submodules/linphone index 632c76515..801508597 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 632c76515682a20e4c62542febcb23f637479efe +Subproject commit 801508597b36e02e6d726851332a202529dc9025