diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index d19eacd51..b4f0c4f1e 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -1334,6 +1334,15 @@ extern "C" jstring Java_org_linphone_core_LinphoneCoreImpl_getRing(JNIEnv* env return NULL; } } +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setCallErrorTone(JNIEnv* env + ,jobject thiz + ,jlong lc + ,jint reason + ,jstring jpath) { + const char* path = jpath ? env->GetStringUTFChars(jpath, NULL) : NULL; + linphone_core_set_call_error_tone((LinphoneCore *)lc, (LinphoneReason)reason, path); + if (path) env->ReleaseStringUTFChars(jpath, path); +} extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setRootCA(JNIEnv* env ,jobject thiz ,jlong lc diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index 143ccf40a..9b280dcd8 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -1520,8 +1520,15 @@ public interface LinphoneCore { public boolean acceptEarlyMediaWithParams(LinphoneCall call, LinphoneCallParams params); /** - * - * @return + * Creates a proxy config using the default values if they exists + * @return a default proxy config */ public LinphoneProxyConfig createProxyConfig(); + + /** + * Assign an audio file to played locally upon call failure, for a given reason. + * @param reason the #LinphoneReason representing the failure error code. + * @param path a wav file to be played when such call failure happens. + */ + public void setCallErrorTone(Reason reason, String path); } diff --git a/java/common/org/linphone/core/Reason.java b/java/common/org/linphone/core/Reason.java index e70c9dc09..d08a53e46 100644 --- a/java/common/org/linphone/core/Reason.java +++ b/java/common/org/linphone/core/Reason.java @@ -56,6 +56,34 @@ public class Reason { * Operation was rejected by remote due to request unmatched to any context. */ static public Reason NoMatch = new Reason(12,"NoMatch"); + /** + * Resource moved permanently + */ + static public Reason MovedPermanently = new Reason(13,"MovedPermanently"); + /** + * Resource no longer exists + */ + static public Reason Gone = new Reason(14,"Gone"); + /** + * Temporarily unavailable + */ + static public Reason TemporarilyUnavailable = new Reason(15,"TemporarilyUnavailable"); + /** + * Address incomplete + */ + static public Reason AddressIncomplete = new Reason(16,"AddressIncomplete"); + /** + * Not implemented + */ + static public Reason NotImplemented = new Reason(17,"NotImplemented"); + /** + * Bad gateway + */ + static public Reason BadGateway = new Reason(18,"BadGateway"); + /** + * Server timeout + */ + static public Reason ServerTimeout = new Reason(19,"ServerTimeout"); protected final int mValue; private final String mStringValue; diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index 5e0ae7fce..7b8e5e9ba 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -146,6 +146,7 @@ class LinphoneCoreImpl implements LinphoneCore { private native long[] getChatRooms(long nativePtr); private native int migrateToMultiTransport(long nativePtr); private native long createProxyConfig(long nativePtr); + private native void setCallErrorTone(long nativePtr, int reason, String path); LinphoneCoreImpl(LinphoneCoreListener listener, File userConfig, File factoryConfig, Object userdata) throws IOException { mListener = listener; @@ -1134,4 +1135,8 @@ class LinphoneCoreImpl implements LinphoneCore { public LinphoneProxyConfig createProxyConfig() { return new LinphoneProxyConfigImpl(createProxyConfig(nativePtr)); } + @Override + public void setCallErrorTone(Reason reason, String path) { + setCallErrorTone(nativePtr, reason.mValue, path); + } }