android IM的实现:聊天室(采用smack API)
来源:互联网 发布:网络语言你不懂我的触 编辑:程序博客网 时间:2024/05/11 21:57
由于Smack的API版本不一样吧,以为会有个对应的GroupChat来处理聊天室(跟Chat处理普通聊天一样).可我错了,我没有找到这个类
翻了下API,最后发现只有采用MultiUserChat
获取服务器端聊天室信息:
public static void getConferenceRoom() throws XMPPException {if (!MultiUserChat.getHostedRooms(mAdaptee, "127.0.0.1").isEmpty()) {for (HostedRoom k : MultiUserChat.getHostedRooms(mAdaptee,"127.0.0.1")) {for (HostedRoom j : MultiUserChat.getHostedRooms(mAdaptee,k.getJid())) {RoomInfo info2 = MultiUserChat.getRoomInfo(mAdaptee,j.getJid());if (j.getJid().indexOf("@") > 0) {System.out.println("聊天室的名称是: " + j.getName()+ "\n JID是:" + j.getJid());System.out.println("aaNumber of occupants:"+ info2.getOccupantsCount());System.out.println("聊天室的描述:" + info2.getDescription());System.out.println("聊天室的主题:" + info2.getSubject());System.out.println("聊天室的JID:" + info2.getRoom());}}}}}
加入聊天室,获取聊天室的人数,监听消息的发送与接收,监听聊天室的动态:
public static void joinRoom() throws XMPPException{MultiUserChat multiUserChat = new MultiUserChat(mAdaptee, "minzujy@conference.127.0.0.1");multiUserChat.join("NiMei", "");multiUserChat.sendMessage("send message successful");// 发送消息System.out.println(multiUserChat.getOccupantsCount());// 聊天室人数Iterator<String> it = multiUserChat.getOccupants();while(it.hasNext()){// minzujy@conference.127.0.0.1/sushuo1// minzujy@conference.127.0.0.1/guohaiSystem.out.println(StringUtils.parseResource(it.next()));// 聊天室成员名字}multiUserChat.addMessageListener(new PacketListener() {@Overridepublic void processPacket(Packet packet) {Message message = (Message)packet;//接收来自聊天室的聊天信息System.out.println("收到聊天室消息=>" + StringUtils.parseResource(message.getFrom()) + ": "+message.getBody());}});multiUserChat.addParticipantStatusListener(new ParticipantStatusListener() {@Overridepublic void voiceRevoked(String participant) {// TODO Auto-generated method stub}@Overridepublic void voiceGranted(String participant) {// TODO Auto-generated method stub}@Overridepublic void ownershipRevoked(String participant) {// TODO Auto-generated method stub}@Overridepublic void ownershipGranted(String participant) {// TODO Auto-generated method stub}@Overridepublic void nicknameChanged(String participant, String newNickname) {// TODO Auto-generated method stubSystem.out.println(StringUtils.parseResource(participant) + " is now known as "+ newNickname +".");}@Overridepublic void moderatorRevoked(String participant) {// TODO Auto-generated method stub}@Overridepublic void moderatorGranted(String participant) {// TODO Auto-generated method stub}@Overridepublic void membershipRevoked(String participant) {// TODO Auto-generated method stub}@Overridepublic void membershipGranted(String participant) {// TODO Auto-generated method stub}@Overridepublic void left(String participant) {// TODO Auto-generated method stubSystem.out.println(StringUtils.parseResource(participant) + " has left the room.");}@Overridepublic void kicked(String participant, String actor, String reason) {// TODO Auto-generated method stub}@Overridepublic void joined(String participant) {// TODO Auto-generated method stubSystem.out.println(StringUtils.parseResource(participant) + " has joined the room.");}@Overridepublic void banned(String participant, String actor, String reason) {// TODO Auto-generated method stub}@Overridepublic void adminRevoked(String participant) {// TODO Auto-generated method stub}@Overridepublic void adminGranted(String participant) {// TODO Auto-generated method stub}});}
监听好友发送来的加入聊天室的邀请:
MultiUserChat.addInvitationListener(mAdaptee, new InvitationListener() {@Overridepublic void invitationReceived(org.jivesoftware.smack.Connection conn, String room,String inviter, String reason, String password, Message message) {MultiUserChat multiUserChat = new MultiUserChat(conn, room);System.out.println("收到来自 "+inviter+" 的聊天室邀请。邀请附带内容:"+reason);try {multiUserChat.join("HMM", password);} catch (XMPPException e) {System.out.println("加入聊天室失败");e.printStackTrace();}System.out.println("成功加入聊天室");multiUserChat.addMessageListener(new PacketListener() {@Overridepublic void processPacket(Packet packet) {Message message = (Message)packet;//接收来自聊天室的聊天信息System.out.println(message.getFrom() + ":" + message.getBody());}});}});
- android IM的实现:聊天室(采用smack API)
- openfire,smack,XMPP,android下的会议室,聊天室的实现
- Smack+Openfire搭建IM通信(Android 实现)
- IM项目,使用openfire服务,Smack的android端概述
- Android基于XMPP协议,Smack类库的IM通讯
- Android基于XMPP Smack openfire 开发的聊天室
- Android基于XMPP Smack openfire 开发的聊天室(一)
- Android基于XMPP Smack openfire 开发的聊天室
- Android基于XMPP Smack openfire 开发的聊天室
- Android基于XMPP Smack openfire 开发的聊天室(一)
- android下的XMPP对应smack-4.2.1,实现登录,注册,发单聊,加聊天室,发群聊等简单功能
- Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】
- Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】
- Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】
- Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】
- Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】
- Android 上用smack 快速搭建IM
- xmpp openfire smack android IM demo
- 用SMOD和CMOD进行SD的用户增强
- 下面是我写的I2C的软驱动,希望对你们有帮助
- LDD3学习笔记(21):tty驱动
- Java JDBC操作Image类型数据 添加和查询
- Source Insight使用技巧之关闭大括号自动缩进方法
- android IM的实现:聊天室(采用smack API)
- SharedPreferences
- Flash&Flex大全
- 《Flex企业应用开发实战》迷你书电子版
- android 访问web应用
- 袅化浮云是神马
- oracle 常用hint
- VBShell调用后等待程序运行结束
- ffmpeg分析系列之二(文件协议)