用asmack,服务器是tigase ,创建房间,加入聊天室,聊天等的基本功能
来源:互联网 发布:我看网络用语走红 编辑:程序博客网 时间:2024/05/17 02:39
1./** * 创建房间 * * @param roomName 房间名称 */ public MultiUserChat createRoom(String roomName, String password) { MultiUserChat muc = null; try { if (getConnection() == null) return null; // TODO 完成建群操作 // 创建一个 MultiUserChat对象 这里的"@muc."可以自己写 muc = new MultiUserChat(getConnection(), getFullRoomname(roomName)); muc.create(roomName); // 获得聊天室的配置表单 Form form = muc.getConfigurationForm(); // 根据原始表单创建一个要提交的新表单。 Form submitForm = form.createAnswerForm(); // 向要提交的表单添加默认答复 for (Iterator<FormField> fields = form.getFields(); fields.hasNext(); ) { FormField field = (FormField) fields.next(); if (!FormField.TYPE_HIDDEN.equals(field.getType()) && field.getVariable() != null) { // 设置默认值作为答复 submitForm.setDefaultAnswer(field.getVariable()); } } submitForm.setAnswer("muc#roomconfig_moderatedroom", false); // 设置聊天室是持久聊天室,即将要被保存下来 submitForm.setAnswer("muc#roomconfig_persistentroom", true); // 房间仅对成员开放 submitForm.setAnswer("muc#roomconfig_membersonly", false); if (password == null || password.length() == 0) { // 不需要密码能进入的房间 submitForm.setAnswer("muc#roomconfig_passwordprotectedroom", false); } else { // 需要密码才能进入的房间 submitForm.setAnswer("muc#roomconfig_passwordprotectedroom", true); // 设置房间密码 submitForm.setAnswer("muc#roomconfig_roomsecret", password); }// // 允许使用者修改昵称 submitForm.setAnswer("x-muc#roomconfig_canchangenick", true); // 登录房间对话 submitForm.setAnswer("muc#roomconfig_enablelogging", true); muc.sendConfigurationForm(submitForm); } catch (XMPPException e) { Log.e("you wenti", "网络不给力,请重试" + e.getMessage()); e.printStackTrace(); return null; } return muc; }
2. /** * 加入有密码的会议室 * * @param user 昵称 * @param roomsName 会议室名 */ public int joinPassMultiUserChat(String user, String password, String roomsName) { try { if (getConnection() == null) return 0; // 使用XMPPConnection创建一个MultiUserChat窗口 if (mulChat != null) { mulChat.leave(); mulChat = null; } mulChat = new MultiUserChat(getConnection(), roomsName + "@muc." + getConnection().getServiceName()); // 聊天室服务将会决定要接受的历史记录数量 DiscussionHistory history = new DiscussionHistory(); history.setMaxChars(0); history.setSeconds(300);// history.setSince(new Date()); // 用户加入聊天室 mulChat.join(user, password, history, SmackConfiguration.getPacketReplyTimeout());// mulChat.changeNickname(user);//修改昵称 Log.e("muc", "会议室【" + roomsName + "】加入成功........"); return 1; } catch (Exception e) { e.printStackTrace();// if(Constants.IS_DEBUG) Log.e("muc", "会议室【" + roomsName + "】加入失败........"); return 2; } finally { } }
3.* 查询会议室成员名字
* @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;}
/** * TODO 发送消息 * * @param msg 消息内容 * @param chatType 消息类型(聊天,还是群聊) */ @SuppressLint("NewApi") public void sendMsg(String msg, int chatType) throws Exception { if (getConnection() == null) { throw new Exception("XmppException"); } if (msg.isEmpty()) { Toast.makeText(context, "信息不能为空", Toast.LENGTH_SHORT).show(); } else { //判断是 组聊 还是单聊 if (chatType == 2) { //发送群聊信息,这里的mulChat,就是你加入房间时的mucmulChat.sendMessage(msg); } else if (chatType == 1) {// newchat.sendMessage(msg); } } }//根据roomJID获取聊天室成员数量 ,这里的mulChat,就是你加入房间时的muc
public int getRoomOccupantsCount() { int occupantsCount= mulChat.getOccupantsCount(); return occupantsCount; }//根据roomJID获取聊天室信息 这里的mulChat,就是你加入房间时的mucpublic RoomInfo getRoomInfo(String roomname) { RoomInfo roomInfo = null; try { roomInfo = MultiUserChat.getRoomInfo(getConnection(), getFullRoomname(roomname)); } catch (XMPPException e) { e.printStackTrace(); }// System.out.println(roomInfo.getRoom() + "-" + roomInfo.getSubject() + "-" + roomInfo.getOccupantsCount()); return roomInfo; }
0 0
- 用asmack,服务器是tigase ,创建房间,加入聊天室,聊天等的基本功能
- 基于tigase服务器的安卓客户端开发---创建聊天
- smack在tigase服务器下创建聊天室
- tigase下的聊天室创建与配置
- 基于asmack的聊天
- android asmack 注册 登陆 聊天 多人聊天室 文件传输
- android asmack 注册 登陆 聊天 多人聊天室 文件传输
- android asmack 注册 登陆 聊天 多人聊天室 文件传输【1】
- android asmack 注册 登陆 聊天 多人聊天室 文件传输
- android asmack 注册 登陆 聊天 多人聊天室 文件传输
- android asmack 注册 登陆 聊天 多人聊天室 文件传输
- android asmack 注册 登陆 聊天 多人聊天室 文件传输
- android asmack 注册 登陆 聊天 多人聊天室 文件传输
- android asmack 注册 登陆 聊天 多人聊天室 文件传输
- android asmack 注册 登陆 聊天 多人聊天室 文件传输
- Android asmack 注册 登陆 聊天 多人聊天室 文件传输
- android asmack 注册 登陆 聊天 多人聊天室 文件传输
- android asmack 注册 登陆 聊天 多人聊天室 文件传输
- Oracle 11g密码过期
- php 在线浏览word paf
- echarts组件及基础名词介绍
- 《幸福的种子》文章要点
- 自己MarkDown编辑中使用的一些东西
- 用asmack,服务器是tigase ,创建房间,加入聊天室,聊天等的基本功能
- ActiveMQ_日志输出
- Android 笔记:Android中自定义checkbox样式
- 推荐书单列表
- Android动画之Interpolator插入器
- 2D-Gabor 滤波器对图像纹理的增强
- 世界著名探险家
- JDK 6目录学习笔记
- 回文词 UVA401 面对多种文字输出的技巧