如何在 xmpp android 中设置和获取状态 [英] How to set and get presence in xmpp android
本文介绍了如何在 xmpp android 中设置和获取状态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是 android 和 xmpp 的新手..我正在尝试使用 xmpp 构建一个聊天应用程序.我想知道如何在 xmpp android 中设置我的状态并获得其他用户的状态.我尝试使用他们提供的文档,但它不起作用..总是状态显示 null 和类型为不可用.请发布详细答案.
I am new to android and xmpp..i am trying to build a chatting app using xmpp. I want to know How to set my presence and also get other users presence in xmpp android. i tried with their provided documentation but it is not working ..always status shows null and type as unavailable. please post a detail answer.
Roster roster = Roster.getInstanceFor(connection);
//Get all rosters
if (!roster.isLoaded())
try {
roster.reloadAndWait();
} catch (SmackException.NotLoggedInException | SmackException.NotConnectedException | InterruptedException e) {
e.printStackTrace();
}
Collection<RosterEntry> entries = roster.getEntries();
//loop through
for (RosterEntry entry : entries) {
//example: get presence, type, mode, status
Presence entryPresence = roster.getPresence(entry.getUser());
StatusMode statusMode= StatusMode.createStatusMode(entryPresence);
// statusMode.getMode();
Presence.Type userType = entryPresence.getType();
Presence.Mode mode = entryPresence.getMode();
String status = entryPresence.getStatus();
retrieveState_mode(mode,entryPresence.isAvailable());
Log.d("####User status","...."+entry.getUser()+"....."+statusMode+"....."+entryPresence +" \ntype: "+"\n"+userType + "\nmode: " +mode + "\nstatus: " + status);// + "\nType: " + status.getType());
}
roster.addRosterListener(new RosterListener() {
// Ignored events public void entriesAdded(Collection<String> addresses) {}
public void entriesDeleted(Collection<String> addresses) {
}
@Override
public void entriesAdded(Collection<String> addresses) {
}
public void entriesUpdated(Collection<String> addresses) {
}
public void presenceChanged(Presence presence) {
System.out.println("Presence changed: " + presence.getFrom() + " " + presence);
}
});
推荐答案
for document refer here about Xmpp and here for details
这里是查找用户状态的代码
Here the code for finding user state
Presence availability = roster.getPresence(user);
Mode userMode = availability.getMode();
retrieveState_mode(availability.getMode(),availability.isAvailable());
public static int retrieveState_mode(Mode userMode, boolean isOnline) {
int userState = 0;
/** 0 for offline, 1 for online, 2 for away,3 for busy*/
if(userMode == Mode.dnd) {
userState = 3;
} else if (userMode == Mode.away || userMode == Mode.xa) {
userState = 2;
} else if (isOnline) {
userState = 1;
}
return userState;
}
这篇关于如何在 xmpp android 中设置和获取状态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文