安卓聊天室

android IM的实现:聊天室(采用smack API)
分类: Android 6061人阅读 评论(17) 收藏 举报

由于Smack的API版本不一样吧,以为会有个对应的GroupChat来处理聊天室(跟Chat处理普通聊天一样).可我错了,我没有找到这个类

翻了下API,最后发现只有采用MultiUserChat

获取服务器端聊天室信息:

  1. public static void getConferenceRoom() throws XMPPException {
  2. if (!MultiUserChat.getHostedRooms(mAdaptee, "127.0.0.1").isEmpty()) {
  3. for (HostedRoom k : MultiUserChat.getHostedRooms(mAdaptee,
  4. "127.0.0.1")) {
  5. for (HostedRoom j : MultiUserChat.getHostedRooms(mAdaptee,
  6. k.getJid())) {
  7. RoomInfo info2 = MultiUserChat.getRoomInfo(mAdaptee,
  8. j.getJid());
  9. if (j.getJid().indexOf("@") > 0) {
  10. System.out.println("聊天室的名称是: " + j.getName()
  11. + "\n JID是:" + j.getJid());
  12. System.out.println("aaNumber of occupants:"
  13. + info2.getOccupantsCount());
  14. System.out
  15. .println("聊天室的描述:" + info2.getDescription());
  16. System.out.println("聊天室的主题:" + info2.getSubject());
  17. System.out.println("聊天室的JID:" + info2.getRoom());
  18. }
  19. }
  20. }
  21. }
  22. }
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());
					}
					
				}
			}
		}
		
	}

加入聊天室,获取聊天室的人数,监听消息的发送与接收,监听聊天室的动态:

  1. public static void joinRoom() throws XMPPException{
  2. MultiUserChat multiUserChat = new MultiUserChat(mAdaptee, "minzujy@conference.127.0.0.1");
  3. multiUserChat.join("NiMei", "");
  4. multiUserChat.sendMessage("send message successful");// 发送消息
  5. System.out.println(multiUserChat.getOccupantsCount());// 聊天室人数
  6. Iterator<String> it = multiUserChat.getOccupants();
  7. while(it.hasNext()){
  8. // minzujy@conference.127.0.0.1/sushuo1
  9. // minzujy@conference.127.0.0.1/guohai
  10. System.out.println(StringUtils.parseResource(it.next()));// 聊天室成员名字
  11. }
  12. multiUserChat.addMessageListener(new PacketListener() {
  13. @Override
  14. public void processPacket(Packet packet) {
  15. Message message = (Message)packet;
  16. //接收来自聊天室的聊天信息
  17. System.out.println("收到聊天室消息=>" + StringUtils.parseResource(message.getFrom()) + ": "+message.getBody());
  18. }
  19. });
  20. multiUserChat.addParticipantStatusListener(new ParticipantStatusListener() {
  21. @Override
  22. public void voiceRevoked(String participant) {
  23. // TODO Auto-generated method stub
  24. }
  25. @Override
  26. public void voiceGranted(String participant) {
  27. // TODO Auto-generated method stub
  28. }
  29. @Override
  30. public void ownershipRevoked(String participant) {
  31. // TODO Auto-generated method stub
  32. }
  33. @Override
  34. public void ownershipGranted(String participant) {
  35. // TODO Auto-generated method stub
  36. }
  37. @Override
  38. public void nicknameChanged(String participant, String newNickname) {
  39. // TODO Auto-generated method stub
  40. System.out.println(StringUtils.parseResource(participant) + " is now known as "+ newNickname +".");
  41. }
  42. @Override
  43. public void moderatorRevoked(String participant) {
  44. // TODO Auto-generated method stub
  45. }
  46. @Override
  47. public void moderatorGranted(String participant) {
  48. // TODO Auto-generated method stub
  49. }
  50. @Override
  51. public void membershipRevoked(String participant) {
  52. // TODO Auto-generated method stub
  53. }
  54. @Override
  55. public void membershipGranted(String participant) {
  56. // TODO Auto-generated method stub
  57. }
  58. @Override
  59. public void left(String participant) {
  60. // TODO Auto-generated method stub
  61. System.out.println(StringUtils.parseResource(participant) + " has left the room.");
  62. }
  63. @Override
  64. public void kicked(String participant, String actor, String reason) {
  65. // TODO Auto-generated method stub
  66. }
  67. @Override
  68. public void joined(String participant) {
  69. // TODO Auto-generated method stub
  70. System.out.println(StringUtils.parseResource(participant) + " has joined the room.");
  71. }
  72. @Override
  73. public void banned(String participant, String actor, String reason) {
  74. // TODO Auto-generated method stub
  75. }
  76. @Override
  77. public void adminRevoked(String participant) {
  78. // TODO Auto-generated method stub
  79. }
  80. @Override
  81. public void adminGranted(String participant) {
  82. // TODO Auto-generated method stub
  83. }
  84. });
  85. }
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/guohai
			System.out.println(StringUtils.parseResource(it.next()));// 聊天室成员名字
		}
		
		multiUserChat.addMessageListener(new PacketListener() {
			@Override
			public void processPacket(Packet packet) {
				Message message = (Message)packet;
				//接收来自聊天室的聊天信息
				System.out.println("收到聊天室消息=>" + StringUtils.parseResource(message.getFrom()) + ": "+message.getBody());
			}
		});
		
		multiUserChat.addParticipantStatusListener(new ParticipantStatusListener() {
			
			@Override
			public void voiceRevoked(String participant) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void voiceGranted(String participant) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void ownershipRevoked(String participant) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void ownershipGranted(String participant) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void nicknameChanged(String participant, String newNickname) {
				// TODO Auto-generated method stub
				System.out.println(StringUtils.parseResource(participant) + " is now known as "+ newNickname +".");
			}
			
			@Override
			public void moderatorRevoked(String participant) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void moderatorGranted(String participant) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void membershipRevoked(String participant) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void membershipGranted(String participant) {
				// 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 kicked(String participant, String actor, String reason) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void joined(String participant) {
				// TODO Auto-generated method stub
				System.out.println(StringUtils.parseResource(participant) + " has joined the room.");
			}
			
			@Override
			public void banned(String participant, String actor, String reason) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void adminRevoked(String participant) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void adminGranted(String participant) {
				// TODO Auto-generated method stub
				
			}
		});
		
	}

监听好友发送来的加入聊天室的邀请:

  1. MultiUserChat.addInvitationListener(mAdaptee, new InvitationListener() {
  2. @Override
  3. public void invitationReceived(org.jivesoftware.smack.Connection conn, String room,
  4. String inviter, String reason, String password, Message message) {
  5. MultiUserChat multiUserChat = new MultiUserChat(conn, room);
  6. System.out.println("收到来自 "+inviter+" 的聊天室邀请。邀请附带内容:"+reason);
  7. try {
  8. multiUserChat.join("HMM", password);
  9. } catch (XMPPException e) {
  10. System.out.println("加入聊天室失败");
  11. e.printStackTrace();
  12. }
  13. System.out.println("成功加入聊天室");
  14. multiUserChat.addMessageListener(new PacketListener() {
  15. @Override
  16. public void processPacket(Packet packet) {
  17. Message message = (Message)packet;
  18. //接收来自聊天室的聊天信息
  19. System.out.println(message.getFrom() + ":" + message.getBody());
  20. }
  21. });
  22. }
  23. });

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值