Using new callback for presence notification

This commit is contained in:
Sylvain Berfini 2018-08-27 11:14:28 +02:00
parent a484b55fe2
commit a3558f70be
3 changed files with 44 additions and 11 deletions

View file

@ -1012,9 +1012,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou
private Vibrator mVibrator;
public void onNewSubscriptionRequested(Core lc, Friend lf, String url) {}
public void onNotifyPresenceReceived(Core lc, Friend lf) {
ContactsManager.getInstance().refreshSipContact(lf);
}
public void onNotifyPresenceReceived(Core lc, Friend lf) {}
@Override
public void onEcCalibrationAudioInit(Core lc) {
@ -1659,12 +1657,12 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou
@Override
public void onFriendListCreated(Core lc, FriendList list) {
// TODO Auto-generated method stub
list.setListener(ContactsManager.getInstance());
}
@Override
public void onFriendListRemoved(Core lc, FriendList list) {
// TODO Auto-generated method stub
list.setListener(null);
}
@Override

View file

@ -45,6 +45,7 @@ import org.linphone.core.Core;
import org.linphone.core.Factory;
import org.linphone.core.Friend;
import org.linphone.core.FriendList;
import org.linphone.core.FriendListListener;
import org.linphone.core.MagicSearch;
import org.linphone.core.ProxyConfig;
import org.linphone.mediastream.Log;
@ -59,7 +60,7 @@ import java.util.Locale;
import java.util.Set;
import java.util.concurrent.TimeUnit;
public class ContactsManager extends ContentObserver {
public class ContactsManager extends ContentObserver implements FriendListListener {
private static ContactsManager instance;
private List<LinphoneContact> contacts, sipContacts;
@ -93,6 +94,12 @@ public class ContactsManager extends ContentObserver {
}
public void destroy() {
Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) {
for (FriendList list : lc.getFriendsLists()) {
list.setListener(null);
}
}
defaultAvatar.recycle();
instance = null;
}
@ -293,10 +300,6 @@ public class ContactsManager extends ContentObserver {
LinphoneContact contact = (LinphoneContact)lf.getUserData();
if (contact != null && !sipContacts.contains(contact)) {
sipContacts.add(contact);
Collections.sort(sipContacts);
for (ContactsUpdatedListener listener : contactsUpdatedListeners) {
listener.onContactsUpdated();
}
}
}
@ -590,4 +593,36 @@ public class ContactsManager extends ContentObserver {
Cursor c = getContentResolver().query(ContactsContract.Data.CONTENT_URI, projection, select, new String[]{ ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE }, null);
return c;
}
@Override
public void onContactCreated(FriendList list, Friend lf) {
}
@Override
public void onContactDeleted(FriendList list, Friend lf) {
}
@Override
public void onContactUpdated(FriendList list, Friend newFriend, Friend oldFriend) {
}
@Override
public void onSyncStatusChanged(FriendList list, FriendList.SyncStatus status, String msg) {
}
@Override
public void onPresenceReceived(FriendList list, Friend[] friends) {
for (Friend lf : friends) {
ContactsManager.getInstance().refreshSipContact(lf);
}
Collections.sort(sipContacts);
for (ContactsUpdatedListener listener : contactsUpdatedListeners) {
listener.onContactsUpdated();
}
}
}

@ -1 +1 @@
Subproject commit d5006fc6ea570cfd5efac51d86e2bd442ac1d055
Subproject commit bf8735e40194cc04e1fae2f1d555cca361719137