移动软件开发课程设计报告文档.pdf
《移动软件开发课程设计报告文档.pdf》由会员分享,可在线阅读,更多相关《移动软件开发课程设计报告文档.pdf(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学生课程设计报告 移动软件开发 1 android 即时通讯软件 摘要 在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的 ICQ、国内腾讯公司开发的 OICQ。基于 Java 网络编程的强大功能,本次课程设计使用 Java 编写一个运行在android2.2版本以上的即时通讯软件。一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成。Java 提供的多线程功能用多线程可完成一点对多点的聊天,数据库管理系统用 SQLlite 来访问数据库的。本系统建立在 JAVA 平台上,系统的设计使用了面向对象技
2、术和面向对象的设计原则。系统采用 C/S 结构,客户端与客户端以及客户端与服务器端之间传送消息。使用 JAVA 语言编写,开发工具采用 AS。在智能手机中,Android 平台约占 75市场份额。安卓系统的广泛应用,使得Android手机应用程序的数量快速增长,即时通讯APP的应用范围也更加广泛。关键字:多线程;客户机/服务器;JAVA;AS;Android 手机应用 2 1.开发背景 Android的英文翻译是指“机器人”,而 Android这个词语作为操作系统的名称出现,是谷歌在 2007 年发布了应用在手机平台上的操作系统,自此 Android作为手机操作系统出现在人们的视野中。同时由于
3、 Android的操作系统的开源性和可开发性使得以 Android操作系统的应用软件日益增多。Android操作系统被越来越多的人接受和使用。目前的 Android聊天软件基本分为 2 种架构形式:(1)C/S 架构:采取客户端/服务器对等传输的形式,用户方主要使用客户端软件,使用前用户通过网上下载客户端软件,再安装到手机上进行使用,市场上流行的 C/S 架构的聊天软件有以下几种:QQ、微信、微博、YY、MSN等;(2)B/S 架构:浏览器/服务端对等传输的形式,这种形式下的即时通信工具,一般都是依赖于互联网,作为用户无需下载客户端,用户一般在浏览往网上网页时浏览器会提供一个类似于客户端的界面
4、使用户可以发送消息,此架构一般应用在数据流比较大的电商网站,如WebQQ等。3 2.软件需求分析 2.1 软件开发的工具和环境 1.开发环境:AS 2.开发语言:JAVA 3.模拟机平台:AVD 4.手机运行平台:Android2.1以及上版本开发软件 5.所需插件:JDK 2.2 安装 JDK 和 SDK 先从网站上找到 JDK1.6(JREaloneisnotsufficient)版本并下载,下载完毕后将它安装在 PC 机上并在 PC 机上设置好有关的环境变量,将JAVA_HOME,path等几个设置为适用于 Java开发的环境变量,最后将其导入你的JDK文件路径 SDK安装:直接从相关网
5、站下载好 SDK 压缩包,然后打开 Eclipse 软件,在其中找到对应路径将其导入就可以。4 3、原理与技术要点分析 3.1 登录功能概要 点击 button按钮 服务器验证登录账号 跳转进入好友列表界面 登录流程图:失 判断账号密码 败 是否正确 1.1 登录功能流程图 3.2 聊天功能概要 用户点击联系人列表中的一个好友时,进入聊天界面 在输入框输入信息,点击发送按钮,发送信息 好友回复消息是在该聊天页面显示 当有好友发消息过来时,系统会通过Toast 提示 用户聊天模块总体流程图:进入 输入账号及密码 服务器验证 登录成功 5 1.2 用户聊天模块总体流程图 3.3技术要点分析 3.3
6、.1 概念结构设计 3.3.2 逻辑结构设计 1)用户信息(用户账号,用户密码,昵称,头像)public class QQMessage extends Protocal public String type=QQMessageType.MSG_TYPE_CHA T_P2P;/数据类型 public long from=0;/发送者 account 6 名 public int fromAvatar=1;/头像 public long to=0;/接收者 account 消息内容(hi)public String sendTime=MyTime.getTime();/发送时间 2)会话信息(好
7、友账号,好友头像,发送/接收消息时间,消息内容)public class QQMessageType 注册 登录 登出 public static final String MSG_TYPE_CHApublic static final String MSG_TYPE_CHA聊天 public static final String MSG_TYPE_CHApublic static final String MSG_TYPE_CHA群聊 下线 成功 好友列表 失败 7 4详细设计 4.1 用户聊天模块 4.1.1 ChatActivity 类 public class ChatActivit
8、y extends Activity ListView listView;TextView title,send_nick,recv_nick;EditText input;private String toNick;private Long account;ImApp app;private ChatMessageAdapter adapter;List list=new ArrayList();/内容观察者:观察 uri中是否出现数据库被修改的信号 private ContentObserver observer=new ContentObserver(new Handler()/观察到发
9、生变化后,所做的动作 /android2.2 Override public void onChange(boolean selfChange)super.onChange(selfChange);requery();/android4.0以上 Override public void onChange(boolean selfChange,Uri uri)super.onChange(selfChange,uri);requery();private void requery()数据发生变化,取出数据刷新聊天界面取出数据刷新聊天界面 list.clear();if(adapter!=null
10、)adapter.notifyDataSetChanged();if(list.size()0)listView.setSelection(list.size()-1);Override protected void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.activity_chat);listView=(ListView)findViewById(R.id.listview_chat);title=(TextView)findViewById(R
11、.id.tv_title);input=(EditText)findViewById(R.id.edt_input);send_nick=(TextView)findViewById(R.id.tv_send_nick);recv_nick=(TextView)findViewById(R.id.tv_recv_nick);8 /注册内容观察者 /getContentResolver().registerContentObserver(地址:信号,子路径是否有效,指定一个观察者);this.getContentResolver().registerContentObserver(uri,tru
12、e,observer);app=(ImApp)getApplication();Intent intent=this.getIntent();Bundle bundle=intent.getExtras();与 聊天中聊天中 adapter=new ChatMessageAdapter(this,list);listView.setAdapter(adapter);if(list.size()-10)listView.setSelection(list.size()-1);/接收消息 /1.messageType=p2p 2.app.account=msg.to 3.msg,account-t
13、oast public void clickSend(View v)String messageBody=input.getText().toString().trim();发送消息不为空发送消息不为空 return;final QQMessage msg=new QQMessage();msg.type=QQMessageType.MSG_TYPE_CHAT_P2P;msg.content=messageBody;msg.from=app.getAccount();msg.to=account;人族人族 /发送干两件事情 /1:把消息显示到聊天记录区 list.add(msg);/刷新 li
14、st if(adapter!=null)adapter.notifyDataSetChanged();/从最后一条开始显示 if(list.size()0)listView.setSelection(list.size()-1);/2:发送给聊天对象 ThreadUtils.runInThread(new Runnable()Override public void run()try app.getCoreService().sendMessage(msg);catch(Exception e)e.printStackTrace(););/把与当前好友聊天记录查询出来,/并显示到与当前好友的聊
15、天界面 private void querySetofChatWithOne(String session_id,ListmsgList)List List SESSION_ID=?order by SENDTIME 9 9 for(com.example.meiyu.qq_im.dao.QQContactDB item:dbmsgList)QQMessage msg=new QQMessage();msg.type=QQMessageType.MSG_TYPE_CHAT_P2P;msg.content=item.getContent();msg.from=item.getFrom();msg
16、.to=item.getTo();msg.fromNick=item.getFromNick();msgList.add(msg);Override protected void onDestroy()super.onDestroy();getContentResolver().unregisterContentObserver(observer);4.1.2 SplashActivity 类 public class SplashActivity extends Activity Override protected void onCreate(Bundle savedInstanceSta
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 移动 软件 开发 课程设计 报告 文档
限制150内