如何在 xmpp android 中设置和获取状态 [英] How to set and get presence in xmpp android

查看:19
本文介绍了如何在 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);
        }
    });

推荐答案

有关文档,请参阅此处关于 Xmpp此处了解详情

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆