From 09e861e19e0e7d9e58f3f3eb5995efba937026c8 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 14 Sep 2016 15:36:43 +0200 Subject: [PATCH] JNI wrapper for linphone_friend_get_presence_model_for_uri_or_tel --- coreapi/linphonecore_jni.cc | 9 +++++++++ java/common/org/linphone/core/LinphoneFriend.java | 10 +++++++++- java/impl/org/linphone/core/LinphoneFriendImpl.java | 4 ++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 88c3f3743..7f00e7902 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -3914,6 +3914,15 @@ extern "C" jboolean Java_org_linphone_core_LinphoneFriendImpl_isAlreadyPresentIn return lf->friend_list != NULL; } +extern "C" jobject Java_org_linphone_core_LinphoneFriendImpl_getPresenceModelForUri(JNIEnv* env, jobject thiz, jlong ptr, jstring juri) { + LinphoneFriend *lf = (LinphoneFriend *)ptr; + const char *uri = GetStringUTFChars(env, juri); + LinphonePresenceModel *model = (LinphonePresenceModel *)linphone_friend_get_presence_model_for_uri_or_tel(lf, uri); + ReleaseStringUTFChars(env, juri, uri); + if (model == NULL) return NULL; + RETURN_USER_DATA_OBJECT("PresenceModelImpl", linphone_presence_model, model); +} + /* * Class: org_linphone_core_LinphoneFriendImpl * Method: getPresenceModel diff --git a/java/common/org/linphone/core/LinphoneFriend.java b/java/common/org/linphone/core/LinphoneFriend.java index 6b5ac197c..b0e8ffaa0 100644 --- a/java/common/org/linphone/core/LinphoneFriend.java +++ b/java/common/org/linphone/core/LinphoneFriend.java @@ -111,14 +111,22 @@ public interface LinphoneFriend { /** * Get the status of a friend * @return OnlineStatus - * @deprecated Use getPresenceModel() instead + * @deprecated Use getPresenceModelForUri() instead */ OnlineStatus getStatus(); /** * Get the presence information of a friend * @return A #PresenceModel object, or null if the friend do not have presence information (in which case he is considered offline) + * @deprecated Use getPresenceModelForUri() instead */ PresenceModel getPresenceModel(); + + /** + * Get the presence information for a specific uri (phone number or sip address) + * @return A #PresenceModel object or null + */ + PresenceModel getPresenceModelForUri(String uri); + /** * Set the presence information of a friend * @param presenceModel A #PresenceModel object diff --git a/java/impl/org/linphone/core/LinphoneFriendImpl.java b/java/impl/org/linphone/core/LinphoneFriendImpl.java index ca25208d2..72b4ac420 100644 --- a/java/impl/org/linphone/core/LinphoneFriendImpl.java +++ b/java/impl/org/linphone/core/LinphoneFriendImpl.java @@ -33,6 +33,7 @@ class LinphoneFriendImpl implements LinphoneFriend, Serializable { private native boolean isPresenceReceived(long nativePtr); private native int getStatus(long nativePtr); private native Object getPresenceModel(long nativePtr); + private native Object getPresenceModelForUri(long nativePtr, String uri); private native void setPresenceModel(long nativePtr, long presencePtr); private native void edit(long nativePtr); private native void done(long nativePtr); @@ -92,6 +93,9 @@ class LinphoneFriendImpl implements LinphoneFriend, Serializable { public PresenceModel getPresenceModel() { return (PresenceModel)getPresenceModel(nativePtr); } + public PresenceModel getPresenceModelForUri(String uri) { + return (PresenceModel)getPresenceModelForUri(nativePtr, uri); + } public void setPresenceModel(PresenceModel presenceModel) { setPresenceModel(nativePtr, ((PresenceModelImpl)presenceModel).getNativePtr()); }