安卓聊天室

来源:互联网 发布:淘宝怎么设置支持花呗 编辑:程序博客网 时间:2024/06/04 17:43
android IM的实现:聊天室(采用smack API)
分类: Android6061人阅读评论(17)收藏举报
聊天smackapiandroidimstring

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

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

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

[java] view plaincopyprint?
  1. publicstaticvoid 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. }

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

[java] view plaincopyprint?
  1. publicstaticvoid 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. publicvoid 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. publicvoid voiceRevoked(String participant) {
  23. // TODO Auto-generated method stub
  24. }
  25. @Override
  26. publicvoid voiceGranted(String participant) {
  27. // TODO Auto-generated method stub
  28. }
  29. @Override
  30. publicvoid ownershipRevoked(String participant) {
  31. // TODO Auto-generated method stub
  32. }
  33. @Override
  34. publicvoid ownershipGranted(String participant) {
  35. // TODO Auto-generated method stub
  36. }
  37. @Override
  38. publicvoid 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. publicvoid moderatorRevoked(String participant) {
  44. // TODO Auto-generated method stub
  45. }
  46. @Override
  47. publicvoid moderatorGranted(String participant) {
  48. // TODO Auto-generated method stub
  49. }
  50. @Override
  51. publicvoid membershipRevoked(String participant) {
  52. // TODO Auto-generated method stub
  53. }
  54. @Override
  55. publicvoid membershipGranted(String participant) {
  56. // TODO Auto-generated method stub
  57. }
  58. @Override
  59. publicvoid left(String participant) {
  60. // TODO Auto-generated method stub
  61. System.out.println(StringUtils.parseResource(participant) +" has left the room.");
  62. }
  63. @Override
  64. publicvoid kicked(String participant, String actor, String reason) {
  65. // TODO Auto-generated method stub
  66. }
  67. @Override
  68. publicvoid joined(String participant) {
  69. // TODO Auto-generated method stub
  70. System.out.println(StringUtils.parseResource(participant) +" has joined the room.");
  71. }
  72. @Override
  73. publicvoid banned(String participant, String actor, String reason) {
  74. // TODO Auto-generated method stub
  75. }
  76. @Override
  77. publicvoid adminRevoked(String participant) {
  78. // TODO Auto-generated method stub
  79. }
  80. @Override
  81. publicvoid adminGranted(String participant) {
  82. // TODO Auto-generated method stub
  83. }
  84. });
  85. }

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

[java] view plaincopyprint?
  1. MultiUserChat.addInvitationListener(mAdaptee, new InvitationListener() {
  2. @Override
  3. publicvoid 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. publicvoid processPacket(Packet packet) {
  17. Message message = (Message)packet;
  18. //接收来自聊天室的聊天信息
  19. System.out.println(message.getFrom() + ":" + message.getBody());
  20. }
  21. });
  22. }
  23. });

0 0
原创粉丝点击