教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

基于安卓的聊天App的设计与实现毕业论文(11)

来源:网络收集 时间:2026-08-23
导读: 安徽工程大学毕业设计(论文) 图4- 6 登录界面效果图 客户端成功连接服务器后,首先判断用户名,密码是否为空,如果都不为空则向服务器发送登录请求,否则提示用户输入相应项。服务器收到请求,对用户进行身份验证

安徽工程大学毕业设计(论文)

图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 hash = EMChatManager .getInstance().getAllConversations(); for (Iterator it = hash.keySet().iterator(); it.hasNext();) { String key = (String) it.next(); EMConversation value = hash.get(key); lvList.add(value); } if(lvList!=null){ for(int i=0;i

- 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字,全部文档内容请下载后查看。喜欢就下载吧 ……

基于安卓的聊天App的设计与实现毕业论文(11).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/519401.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)