asmack MultiUserChat的Participant如何监听MultiUserChat的一系列状态(成员加入,成员退出等等)和获取MultiUserChat相关信息(成员的名称列表)
最近在研究openfire和asmack包,准备写一个即时通讯类android应用,在实现聊天室功能时遇到一系列问题。所使用的asmack是从
openfire官网
中下载smack后,自己按照
这里的编译环境
和教程编译的jar包。
问题如下:
1、作为参与者(Participant)如何获取MultiUserChat的成员列表,如果是房间所有者可以很简单地获取,但其他参与者只能查询到房间所有者信息(Owner)。
2、作为参与者(Participant)如何获取MultUserChat的状态,比如有其他成员进入MultUserChat、退出MultUserChat,需求中这里要给所有成员一个提示通知。
3、另,是否可以有办法获取MultiUserChat的成员头像信息。
以上,请不吝赐教,谢谢
撸管撸管君
11 years, 10 months ago
Answers
获取成员列表:
注意:这里查询出来的名字只是用户进入会议室所用的昵称
/**
* 查询会议室成员名字
* @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