asmack MultiUserChat的Participant如何监听MultiUserChat的一系列状态(成员加入,成员退出等等)和获取MultiUserChat相关信息(成员的名称列表)


最近在研究openfire和asmack包,准备写一个即时通讯类android应用,在实现聊天室功能时遇到一系列问题。所使用的asmack是从 openfire官网 中下载smack后,自己按照 这里的编译环境 和教程编译的jar包。
问题如下:
1、作为参与者(Participant)如何获取MultiUserChat的成员列表,如果是房间所有者可以很简单地获取,但其他参与者只能查询到房间所有者信息(Owner)。
2、作为参与者(Participant)如何获取MultUserChat的状态,比如有其他成员进入MultUserChat、退出MultUserChat,需求中这里要给所有成员一个提示通知。
3、另,是否可以有办法获取MultiUserChat的成员头像信息。
以上,请不吝赐教,谢谢

Android openfire

撸管撸管君 11 years, 10 months ago

获取成员列表:

注意:这里查询出来的名字只是用户进入会议室所用的昵称

/** 
* 查询会议室成员名字 
* @param muc 
*/  
public static List<String> findMulitUser(MultiUserChat muc){  
    List<String> listUser = new ArrayList<String>();  
    Iterator<String> it = muc.getOccupants();  
    //遍历出聊天室人员名称  
    while (it.hasNext()) {  
        // 聊天室成员名字  
        String name = StringUtils.parseResource(it.next());  
        listUser.add(name);  
    }  
    return listUser;  
}

监听状态:

添加监听事件: multiChat.addParticipantStatusListener(new ParticipantStatus());

会议室状态监听事件:

/** 
 * 会议室状态监听事件 
 *  
 * @author Administrator 
 *  
 */  
class ParticipantStatus implements ParticipantStatusListener {  

    @Override  
    public void adminGranted(String arg0) {  
        // TODO Auto-generated method stub  

    }  

    @Override  
    public void adminRevoked(String arg0) {  
        // TODO Auto-generated method stub  

    }  

    @Override  
    public void banned(String arg0, String arg1, String arg2) {  
        // TODO Auto-generated method stub  

    }  

    @Override  
    public void joined(String participant) {  
        System.out.println(StringUtils.parseResource(participant)+ " has joined the room.");  
    }  

    @Override  
    public void kicked(String arg0, String arg1, String arg2) {  
        // TODO Auto-generated method stub  

    }  

    @Override  
    public void left(String participant) {  
        // TODO Auto-generated method stub  
        System.out.println(StringUtils.parseResource(participant)+ " has left the room.");  

    }  

    @Override  
    public void membershipGranted(String arg0) {  
        // TODO Auto-generated method stub  

    }  

    @Override  
    public void membershipRevoked(String arg0) {  
        // TODO Auto-generated method stub  

    }  

    @Override  
    public void moderatorGranted(String arg0) {  
        // TODO Auto-generated method stub  

    }  

    @Override  
    public void moderatorRevoked(String arg0) {  
        // TODO Auto-generated method stub  

    }  

    @Override  
    public void nicknameChanged(String participant, String newNickname) {  
        System.out.println(StringUtils.parseResource(participant)+ " is now known as " + newNickname + ".");  
    }  

    @Override  
    public void ownershipGranted(String arg0) {  
        // TODO Auto-generated method stub  

    }  

    @Override  
    public void ownershipRevoked(String arg0) {  
        // TODO Auto-generated method stub  

    }  

    @Override  
    public void voiceGranted(String arg0) {  
        // TODO Auto-generated method stub  

    }  

    @Override  
    public void voiceRevoked(String arg0) {  
        // TODO Auto-generated method stub  

    }  

}
一个小花卷 answered 9 years, 6 months ago

Your Answer