首页 > 代码库 > 关于Android群聊的那点事

关于Android群聊的那点事

说到群聊很多人立马会想到.群聊就是我在群聊界面里发送消息,然后群里的所有人都能收到.但是,这个过程我们仔细想想,然后一步一步解剖.

第一步:从群创建开始,群创建需要什么?群主和邀请人来共同组合成一个群.

第二步:创建完群之后,我们要对群进行各种操作.提到操作,不同的人对群操作是不同的,显而易见,群主的权限更大.那么,不同的人都有哪些权限呢?

举个简单的例子:比如群主(1.群主可以邀请好友加入自己创建的群.反之,群主可以剔除某些人 2.群主可以修改群的一些基本信息,如群名称,给指定的人一些权限等 3.可以删除或者退出该群等等)

以上对群组做了一些简单的分析.主要是最近在做群聊这一块,很是费劲,工作量极大,累觉无爱!刚做到消息的处理这一块:

比如消息发送和接收,直接代码:

btn_chat_send = (Button) view.findViewById(R.id.chat_send);   btn_chat_send.setOnClickListener(new OnClickListener() {

   @Override    public void onClick(View v) {     

switch (state) {     case MSG_DO_ChangeToButton:      

if (et_chat_editmessage.getText().length() > 0) {       

chatmsg = new ChatAllMessage();      

 chatmsg.setContent(et_chat_editmessage.getText() .toString());       

chatmsg.setDirection(ChatAllMessage.MESSAGE_RIGHT);       

chatmsg.setUsername(new String(         

mContext.mLoginPersonInfo.Name));       

chatmsg.setTime(UrlUtils.getTime());       

chatmsg.setImg(mContext.mSelectedPersonInfo.rowid);       

byte[] by = et_chat_editmessage.getText().toString().getBytes();      

  // 单人聊天 //     

 if (type == 0) {        mContext.m_ClassSync.SendChatMsg((ID - 48), by, by.length, 0); //     

}else if(type==1){ //       

mContext.m_ClassSync.SendGroupChatMessage(mContext.mGroupInfoList.get(position).getRowid(), (ID - 48), by, by.length); //     

 }       

list.add(chatmsg);       

mAdapter.notifyDataSetChanged();       

chat_listview.setSelection(mAdapter.getCount() - 1);       

et_chat_editmessage.setText("");      }      

break;     

case MSG_DO_ChangeToAdd:     

 Intent intent=new Intent();      

intent.setClass(mContext, FileActivity.class);      

mContext.startActivity(intent);      break;    

 }    

}   

});

这是消息发送的主要代码 下面接收部分的代码,比较简洁:

 mContext.sendMessage = new SendMessage() {

   @Override    public void send(ChatAllMessage msg) {     

System.out.println("direction:" + msg.getDirection());     

msg.setUsername(username);     

msg.setImg(img);    

 list.add(msg);     

mHandler.sendEmptyMessage(MSG_Chat_Message_Left);    

}   

};   

chat_listview.setAdapter(mAdapter);   

chat_listview.setSelection(mAdapter.getCount() - 1);

接收消息就是用借口回调来做的.

做出来的效果主要就是当EditText输入框里面的消息为空时,按钮为底部弹出窗体按钮 当输入框内有文字或者其他字符时(获取的输入框的内容的长度大于0时)

按钮变为发送按钮,然后点击发送消息.效果还不错.

各位博友们,欢迎积极参与学习和讨论中来,康莽北鼻!

关于Android群聊的那点事