基于安卓的聊天App的设计与实现毕业论文(11)
安徽工程大学毕业设计(论文)
图4- 6 登录界面效果图
客户端成功连接服务器后,首先判断用户名,密码是否为空,如果都不为空则向服务器发送登录请求,否则提示用户输入相应项。服务器收到请求,对用户进行身份验证,如果通过验证,则发送成功回应,登录成功后需要调用 EMGroupManager.getInstance().l-oadAllGroups(); 和EMChatManager.getInstance().loadAllConversations();。否则,发送失败回应。以下是核心功能代码:
//调用回调函数,传入用户名和密码,进行登录操作
EMChatManager.getInstance().login(username, password, new EMCallBack());
- 25 -
姚旭斌:安卓聊天室App的设计与实现
//若登录成功,则返回onSuccess
public void onSuccess(){ runOnUiThread(new Runnable() { public void run() { EMGroupManager.getInstance().loadAllGroups(); EMChatManager.getInstance().loadAllConversations(); } }
//若登录失败,则返回onError
public void onError(int code,String message){ }
4.3.3 会话列表的读取
首先获取当前所有会话,调用getAllConversations()方法得到一个Hashtable。循环H-ashtable得到一个value的列表lvlist;循环这个lvlist,得到会话最后一条信息的时间time,将time加入tlist中,并且将tlist按照自然数大小升序排列。循环lvlist和tlist,比较lvlist中会话对象最后一条信息的时间和tlist的值是否相符,若一样则将该对象加入列表result,否则,继续循环。最后将得到的result列表进行降序排列。将排列后的list加入到Adapter中,最后加载这个Adapter即可完成获取会话列表的操作。
Hashtable - 26 - 安徽工程大学毕业设计(论文) Collections.reverse(result); adapter = new ListViewAdapter(result, getActivity()); listview.setAdapter(adapter); 在Adapter中,需要将获得的list显示到界面组件中,调用conversation.getLastMes-sage().getBody().toString().substring(5, conversation.getLastMessage().getBody().toString().length() - 1)来获取会话最后一条信息的内容,调用conversation.getLastMessage().getMs-gTime()来获取最后一条信息的发送时间。该时间是以毫秒显示的,需要主动转换。当最后一条信息是当前用户接收时,则调用conversation.getLastMessage().getFrom()来获得会话对象的用户名。当最后一条信息为当前用户发送时,则调用conversation.getLastMe-ssage().getTo()来获取会话对象的用户名。 4.3.4 好友列表的读取 好友列表的获取跟前面讲的会话列表获取有些类似,都是将获取到的信息放入到listview中,再通过加载Adapter来显示。通过调用EMContactManager.getInstance().getContactUserNames()来获取当前用户的所有好友用户名,将其加入到列表中。给listView添加单击事件,点击创建一个与该用户的会话信息。添加一个长按事件,触发时跳出dialog,询问用户下一步操作。若选择修改信息,跳转到修改备注页面,修改好备注后,刷新listview,使得用户名变为备注信息。 4.3.5 发送和接收消息 登录过后,向服务器发送请求,将会话列表显示在会话列表界面,好友列表显示在好友列表界面,通过单击好友列表中的某一个成员,新建一个会话,便可以向该好友发送会话消息。调用环信SDK的sendMessage接口,通过回调函数EMCallBack判断消息是否成功发送。对结果进行操作。注册一个广播,通过广播接收新消息,当有新消息进入时,通过id来获取message对象。若果该对象为当前会话消息,则通知listView刷新数据。如果该对象不是当前会话消息,则新建一个会话对象,通知listView刷新。使用属性“t-o”表示消息的接受者,使用属性“from”表示消息的发送者,使用属性“body”表示消息内容,使用属性“type”表示消息类型。 HORT).show(); 发送消息: EMChatManager.getInstance().sendMessage(message, new EMCallBack(){ @Override public void onError(int arg0, String arg1) { // TODO Auto-generated method stub runOnUiThread(new Runnable(){ public void run(){ Toast.makeText(ChatActivity.this, \发送失败\Toast.LENGTH_S } } }); - 27 - 姚旭斌:安卓聊天室App的设计与实现 @Override public void onProgress(int arg0, String arg1) { // TODO Auto-generated method stub } @Override public void onSuccess() { // TODO Auto-generated method stub runOnUiThread(new Runnable(){ public void run(){ Toast.makeText(ChatActivity.this, \发送成功\Toast.LENGTH_SHORT).show(); } }); }}); }else{ Toast.makeText(getApplicationContext(), \不能发送空消息\Toast.LENGTH_SHORT).show(); } } }); } 接收消息: String msgId = intent.getStringExtra(\ //发送方 String username = intent.getStringExtra(\ // 收到这个广播的时候,message已经在db和内存里了,可以通过id获取mesage对象 EMMessage message = EMChatManager.getInstance().getMessage(msgId); EMConversation conversation = EMChatManager.getInstance().getConversation(username); if (!username.equals(username)) { // 消息不是发给当前会话,return return; } conversation.addMessage(message); dataAdapter.notifyDataSetChanged(); listView.setAdapter(dataAdapter); listView.setSelection(listView.getCount()-1);
…… 此处隐藏:1688字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




