Spark研究笔记9:重要的工厂类PresenceManager(原创)
PresenceManager用于用户的在线状态和模式处理,类 Presence 位于org.jivesoftware.smack.packet,说明:
public enum Type { /** * The user is available to receive messages (default). */ available, /** * The user is unavailable to receive messages. */ unavailable, /** * Request subscription to recipient's presence. */ subscribe, /** * Grant subscription to sender's presence. */ subscribed, /** * Request removal of subscription to sender's presence. */ unsubscribe, /** * Grant removal of subscription to sender's presence. */ unsubscribed, /** * The presence packet contains an error message. */ error } /** * An enum to represent the presence mode. */ public enum Mode { /** * Free to chat. */ chat, /** * Available (the default). */ available, /** * Away. */ away, /** * Away for an extended period of time. */ xa, /** * Do not disturb. */ dnd }
/** * Returns true if the user is online. * * @param jid the jid of the user. * @return true if online. */ public static boolean isOnline(String jid) { final Roster roster = SparkManager.getConnection().getRoster(); Presence presence = roster.getPresence(jid); return presence.isAvailable(); } /** * Returns true if the user is online and their status is available or free to chat. * * @param jid the jid of the user. * @return true if the user is online and available. */ public static boolean isAvailable(String jid) { final Roster roster = SparkManager.getConnection().getRoster(); Presence presence = roster.getPresence(jid); return presence.isAvailable() && !presence.isAway(); } /** * Returns true if the user is online and their mode is available or free to chat. * * @param presence the users presence. * @return true if the user is online and their mode is available or free to chat. */ public static boolean isAvailable(Presence presence) { return presence.isAvailable() && !presence.isAway(); } /** * 返回用户状态 * * @param jid the users jid. * @return the users presence. */ public static Presence getPresence(String jid) { final Roster roster = SparkManager.getConnection().getRoster(); return roster.getPresence(jid); } /** * JID完整全称,例如(ex. derek@jivesoftware.com --> derek@jivesoftware.com/spark) */ public static String getFullyQualifiedJID(String jid) { final Roster roster = SparkManager.getConnection().getRoster(); Presence presence = roster.getPresence(jid); return presence.getFrom(); }
posted on 2013-04-27 17:53 CVT-wangxin 阅读(349) 评论(0) 编辑 收藏 举报