mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-05-15 20:17:56 +00:00
Added JNI wrapper
This commit is contained in:
parent
b068c854ef
commit
6f31200e50
3 changed files with 122 additions and 0 deletions
|
|
@ -3418,8 +3418,72 @@ extern "C" void Java_org_linphone_core_LinphoneFriendListImpl_updateSubscription
|
|||
linphone_friend_list_update_subscriptions((LinphoneFriendList*)friendListptr, (LinphoneProxyConfig*)proxyConfigPtr, jonlyWhenRegistered);
|
||||
}
|
||||
|
||||
extern "C" jlongArray Java_org_linphone_core_LinphoneFriendImpl_getAddresses(JNIEnv* env
|
||||
,jobject thiz
|
||||
,jlong ptr) {
|
||||
MSList *addresses = linphone_friend_get_addresses((LinphoneFriend*)ptr);
|
||||
int size = ms_list_size(addresses);
|
||||
jlongArray jaddresses = env->NewLongArray(size);
|
||||
jlong *jInternalArray = env->GetLongArrayElements(jaddresses, NULL);
|
||||
for (int i = 0; i < size; i++) {
|
||||
jInternalArray[i] = (unsigned long) (addresses->data);
|
||||
addresses = ms_list_next(addresses);
|
||||
}
|
||||
ms_list_free(addresses);
|
||||
env->ReleaseLongArrayElements(jaddresses, jInternalArray, 0);
|
||||
return jaddresses;
|
||||
}
|
||||
|
||||
extern "C" void Java_org_linphone_core_LinphoneFriendImpl_addAddress(JNIEnv* env
|
||||
,jobject thiz
|
||||
,jlong ptr
|
||||
,jlong jaddress) {
|
||||
linphone_friend_add_address((LinphoneFriend*)ptr, (LinphoneAddress*)jaddress);
|
||||
}
|
||||
|
||||
extern "C" void Java_org_linphone_core_LinphoneFriendImpl_removeAddress(JNIEnv* env
|
||||
,jobject thiz
|
||||
,jlong ptr
|
||||
,jlong jaddress) {
|
||||
linphone_friend_remove_address((LinphoneFriend*)ptr, (LinphoneAddress*)jaddress);
|
||||
}
|
||||
|
||||
extern "C" jobjectArray Java_org_linphone_core_LinphoneFriendImpl_getPhoneNumbers(JNIEnv* env
|
||||
,jobject thiz
|
||||
,jlong ptr) {
|
||||
MSList *phone_numbers = linphone_friend_get_phone_numbers((LinphoneFriend*)ptr);
|
||||
int size = ms_list_size(phone_numbers);
|
||||
jobjectArray jphonenumbers = env->NewObjectArray(size, env->FindClass("java/lang/String"), env->NewStringUTF(""));
|
||||
for (int i = 0; i < size; i++) {
|
||||
const char *phone = (const char *)phone_numbers->data;
|
||||
env->SetObjectArrayElement(jphonenumbers, i, env->NewStringUTF(phone));
|
||||
phone_numbers = ms_list_next(phone_numbers);
|
||||
}
|
||||
ms_list_free(phone_numbers);
|
||||
return jphonenumbers;
|
||||
}
|
||||
|
||||
extern "C" void Java_org_linphone_core_LinphoneFriendImpl_addPhoneNumber(JNIEnv* env
|
||||
,jobject thiz
|
||||
,jlong ptr
|
||||
,jstring jphone) {
|
||||
if (jphone) {
|
||||
const char* phone = env->GetStringUTFChars(jphone, NULL);
|
||||
linphone_friend_add_phone_number((LinphoneFriend*)ptr, phone);
|
||||
env->ReleaseStringUTFChars(jphone, phone);
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" void Java_org_linphone_core_LinphoneFriendImpl_removePhoneNumber(JNIEnv* env
|
||||
,jobject thiz
|
||||
,jlong ptr
|
||||
,jstring jphone) {
|
||||
if (jphone) {
|
||||
const char* phone = env->GetStringUTFChars(jphone, NULL);
|
||||
linphone_friend_remove_phone_number((LinphoneFriend*)ptr, phone);
|
||||
env->ReleaseStringUTFChars(jphone, phone);
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" jlong Java_org_linphone_core_LinphoneFriendImpl_getAddress(JNIEnv* env
|
||||
,jobject thiz
|
||||
|
|
|
|||
|
|
@ -165,4 +165,12 @@ public interface LinphoneFriend {
|
|||
* @return
|
||||
*/
|
||||
String getOrganization();
|
||||
|
||||
LinphoneAddress[] getAddresses();
|
||||
void addAddress(LinphoneAddress addr);
|
||||
void removeAddress(LinphoneAddress addr);
|
||||
|
||||
String[] getPhoneNumbers();
|
||||
void addPhoneNumber(String phone);
|
||||
void removePhoneNumber(String phone);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,4 +146,54 @@ class LinphoneFriendImpl implements LinphoneFriend, Serializable {
|
|||
public String getOrganization() {
|
||||
return getOrganization(nativePtr);
|
||||
}
|
||||
|
||||
private native long[] getAddresses(long nativePtr);
|
||||
@Override
|
||||
public LinphoneAddress[] getAddresses() {
|
||||
long[] ptrs = getAddresses(nativePtr);
|
||||
if (ptrs == null) return null;
|
||||
|
||||
LinphoneAddress[] addresses = new LinphoneAddress[ptrs.length];
|
||||
for (int i = 0; i < addresses.length; i++) {
|
||||
addresses[i] = new LinphoneAddressImpl(ptrs[i], LinphoneAddressImpl.WrapMode.FromConst);
|
||||
}
|
||||
return addresses;
|
||||
}
|
||||
|
||||
private native void addAddress(long nativePtr, long addr);
|
||||
@Override
|
||||
public void addAddress(LinphoneAddress addr) {
|
||||
addAddress(nativePtr, ((LinphoneAddressImpl)addr).nativePtr);
|
||||
}
|
||||
|
||||
private native void removeAddress(long nativePtr, long addr);
|
||||
@Override
|
||||
public void removeAddress(LinphoneAddress addr) {
|
||||
removeAddress(nativePtr, ((LinphoneAddressImpl)addr).nativePtr);
|
||||
}
|
||||
|
||||
private native Object[] getPhoneNumbers(long nativePtr);
|
||||
@Override
|
||||
public String[] getPhoneNumbers() {
|
||||
Object[] phones = getPhoneNumbers(nativePtr);
|
||||
if (phones == null) return null;
|
||||
|
||||
String[] phoneNumbers = new String[phones.length];
|
||||
for (int i = 0; i < phones.length; i++) {
|
||||
phoneNumbers[i] = phones[i].toString();
|
||||
}
|
||||
return phoneNumbers;
|
||||
}
|
||||
|
||||
private native void addPhoneNumber(long nativePtr, String phone);
|
||||
@Override
|
||||
public void addPhoneNumber(String phone) {
|
||||
addPhoneNumber(nativePtr, phone);
|
||||
}
|
||||
|
||||
private native void removePhoneNumber(long nativePtr, String phone);
|
||||
@Override
|
||||
public void removePhoneNumber(String phone) {
|
||||
removePhoneNumber(nativePtr, phone);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue