还剩18页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
YangtzeUniversityCollegeofArtsandScien__学生课程设计报告系部机电与信息工程系专业计算机科学与技术班级计科5131姓名来超学号201241136课程名称__平台数据库综合__指导教师王腾实习时间2016年6月20日至2016年6月27日android即时通讯软件摘要在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司__的OICQ基于J__a网络编程的强大功能,本次课程设计使用J__a编写一个运行在android
2.2版本以上的即时通讯软件一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成J__a提供的多线程功能用多线程可完成一点对多点的聊天,数据库管理系统用SQLlite来访问数据库的本系统建立在J__A平台上,系统的设计使用了面向对象技术和面向对象的设计原则系统采用C/S结构,客户端与客户端以及客户端与服务器端之间传送消息使用J__A语言编写,__工具采用AS在智能手机中,Android平台约占75%市场份额安卓系统的广泛应用,使得Android手机应用程序的数量快速增长,即时通讯APP的应用范围也更加广泛关键字多线程;客户机/服务器;J__A;AS;Android手机应用
1.__背景Android的英文翻译是指“机器人”,而Android这个词语作为操作系统的名称出现,是谷歌在2007年发布了应用在手机平台上的操作系统,自此Android作为手机操作系统出现在人们的视野中同时由于Android的操作系统的开源性和可__性使得以Android操作系统的应用软件日益增多Android操作系统被越来越多的人接受和使用目前的Android聊天软件基本分为2种架构形式
(1)C/S架构采取客户端/服务器对等传输的形式,用户方主要使用客户端软件,使用前用户通过网上下载客户端软件,再__到手机上进行使用,市场上流行的C/S架构的聊天软件有以下几种__、__、微博、YY、___等;
(2)B/S架构浏览器/服务端对等传输的形式,这种形式下的即时通信工具,一般都是依赖于互联网,作为用户无需下载客户端,用户一般在浏览往网上网页时浏览器会提供一个类似于客户端的界面使用户可以发送消息,此架构一般应用在数据流比较大的电商__,如Web__等
2.软件需求分析
2.1软件__的工具和环境
1.__环境AS
2.__语言:J__A
3.模拟机平台__D
4.手机运行平台Android
2.1以及上版本__软件
5.所需插件JDK
2.2__JDK和SDK先从__上找到JDK
1.6JREaloneisnotsufficient版本并下载,下载完毕后将它__在PC机上并在PC机上设置好有关的环境变量,将J__A_HOMEpath等几个设置为适用于J__a__的环境变量,最后将其导入你的JDK文件路径SDK__直接从相关__下载好SDK压缩包,然后打开Eclipse软件,在其中找到对应路径将其导入就可以
3、原理与技术要点分析
3.1登录功能概要__button按钮服务器验证登录账号跳转进入好友列表界面登录流程图失判断账号__败是否正确
1.1登录功能流程图
3.2聊天功能概要用户____人列表中的一个好友时,进入聊天界面 在输入框输入信息,__发送按钮,发送信息 好友回复消息是在该聊天页面显示 当有好友发消息过来时,系统会通过Toast提示 用户聊天模块总体流程图
1.2用户聊天模块总体流程图
3.3技术要点分析1用户信息(用户账号,用户__,昵称,头像)publicclass__MessageextendsProtocal{publicStringtype=__MessageType.MSG_TYPE_CHAT_P2P;//数据类型publiclongfrom=0;//发送者accountpublicStringfromNick=;//__名publicintfrom__atar=1;//头像publiclongto=0;//接收者accountpublicStringcontent=;//消息内容hipublicStringsendTime=MyTime.getTime;//发送时间2}会话信息(好友账号,好友头像,发送/接收消息时间,消息内容)publicclass__MessageType{publicstaticfinalStringMSG_TYPE_REGISTER=register;//注册publicstaticfinalStringMSG_TYPE_LOGIN=login;//登录publicstaticfinalStringMSG_TYPE_LOGINOUT=loginout;//登出publicstaticfinalStringMSG_TYPE_CHAT_P2P=chatp2p;//聊天publicstaticfinalStringMSG_TYPE_CHAT_ROOM=chatroom;//群聊publicstaticfinalStringMSG_TYPE_OFFLINE=offline;//下线publicstaticfinalStringMSG_TYPE_SUC__SS=suc__ss;//成功publicstaticfinalStringMSG_TYPE_BUDDYLIST=buddylist;//好友列表publicstaticfinalStringMSG_TYPE_FAILURE=failure;//失败}4.详细设计
4.1用户聊天模块publicclassChatActivityextendsActivity{ListViewlistView;TextViewtitlesend_nickrecv_nick;EditTextinput;Stringsix_spa__=;Stringtwo_spa__=;privateStringtoNick;privateLongaccount;I__ppapp;privateChatMessageAdapteradapter;List__Messagelist=newArrayList;//内容观察者观察uri中是否出现数据库被修改的__privateContentObserverobserver=newContentObservernewHandler{//观察到发生变化后,所做的动作//android
2.2@OverridepublicvoidonChangebooleanselfChange{super.onChangeselfChange;requery;}//android
4.0以上@OverridepublicvoidonChangebooleanselfChangeUriuri{super.onChangeselfChangeuri;requery;}};privatevoidrequery{list.clear;querySetofChatWithOneaccount+list;ifadapter!=null{adapter.notifyDataSetChanged;}iflist.size0{listView.setSelectionlist.size-1;}}@OverrideprotectedvoidonCreateBundles__edInstan__State{super.onCreates__edInstan__State;//注册内容观察者//getContentResolver.registerContentObserver地址__,子路径是否有效,指定一个观察者;this.getContentResolver.registerContentObserveruritrueobserver;app=I__ppgetApplication;Intentintent=this.getIntent;Bundlebundle=intent.getExtras;account=bundle.getLongaccount;toNick=bundle.getStringnick;title.setText与[+toNick+]聊天中;querySetofChatWithOneaccount+list;adapter=newChatMessageAdapterthislist;listView.setAdapteradapter;iflist.size-10{listView.setSelectionlist.size-1;}}//接收消息publicvoidclickSendViewv{StringmessageBody=input.getText.toString.trim;if.equalsmessageBody{Toast.__keTextgetBaseContext发送消息不为空Toast.LENGTH_SHORT.show;return;}input.setText;final__Messagemsg=new__Message;msg.type=__MessageType.MSG_TYPE_CHAT_P2P;msg.content=messageBody;msg.from=app.getAccount;msg.to=account;msg.fromNick=人族;//发送干两件事情//1把消息显示到聊天记录区list.addmsg;//刷新listifadapter!=null{adapter.notifyDataSetChanged;}//从最后一条开始显示iflist.size0{listView.setSelectionlist.size-1;}//2发送给聊天对象ThreadUtils.runInThreadnewRunnable{@Overridepublicvoidrun{try{app.getCoreServi__.sendMessagemsg;}catchEx__ptione{e.printStackTra__;}}};}//把与当前好友聊天记录查询出来//并显示到与当前好友的聊天界面privatevoidquerySetofChatWithOneStringsession_idList__MessagemsgList{__Messagemsg=new__Message;msg.type=__MessageType.MSG_TYPE_CHAT_P2P;msg.content=item.getContent;msg.from=item.getFrom;msg.to=item.getTo;msg.fromNick=item.getFromNick;msgList.addmsg;}}@OverrideprotectedvoidonDestroy{super.onDestroy;getContentResolver.unregisterContentObserverobserver;}}publicclassSplashActivityextendsActivity{@OverrideprotectedvoidonCreateBundles__edInstan__State{super.onCreates__edInstan__State;ThreadUtils.runInThreadnewRunnable{@Overridepublicvoidrun{try{Thread.sleep3000;//至少3秒,下限startActivitynewIntentgetBaseContextLoginActivity.class;finish;}catchInterruptedEx__ptione{e.printStackTra__;}}};}}xmlversion=
1.0encoding=utf-8android:layout_width=__tch_parentandroid:layout_height=__tch_parentTableLayoutandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:layout___nterInParent=true!--图标--I__geViewandroid:layout_width=80dpandroid:layout_height=80dpandroid:src=@drawable/ic_launcher___/!--账号--TableRowandroid:layout_width=__tch_parentandroid:layout_height=wrap_contentandroid:layout___rginTop=20dpTextViewandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:text=__账号android:textSize=25sp/EditTextandroid:layout_width=200dpandroid:layout_height=wrap_contentandroid:singleLine=trueandroid:id=@+id/accountandroid:text=159//TableRow!--__--TableRowandroid:layout_width=__tch_parentandroid:layout_height=wrap_contentandroid:layout___rginTop=20dpTextViewandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:text=密码android:textSize=25sp/EditTextandroid:layout_width=200dpandroid:layout_height=wrap_contentandroid:singleLine=trueandroid:id=@+id/pswandroid:inputType=textPasswordandroid:text=test//TableRow!--按钮--Buttonandroid:onClick=loginandroid:layout___rginTop=10dpandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:text=登录android:gr__ity=__nterandroid:textSize=25sp//TableLayout/RelativeLayoutxmlversion=
1.0encoding=utf-8android:layout_width=__tch_parentandroid:layout_height=__tch_parentandroid:orientation=verticalandroid:weightSum=1!--好友标签--TextViewandroid:id=@+id/tv_titleandroid:layout_width=__tch_parentandroid:layout_height=wrap_contentandroid:textSize=18spandroid:textColor=#FFFFFFandroid:background=#0099ffandroid:gr__ity=__nter/!--聊天记录--ListViewandroid:layout_width=__tch_parentandroid:layout_height=0dpandroid:layout_weight=1android:id=@+id/listview_chatandroid:cacheColorHint=@android:color/transparentandroid:listSelector=@android:color/transparentandroid:divider=@android:color/transparentandroid:dividerHeight=1dp/ListView!--输入聊天--LinearLayoutandroid:orientation=horizontalandroid:layout_width=__tch_parentandroid:layout_height=40dpEditTextandroid:id=@+id/edt_inputandroid:layout_weight=6android:layout_width=0dpandroid:layout_height=wrap_content/Buttonandroid:onClick=clickSendandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:layout_weight=1android:text=发送//LinearLayout/LinearLayout
4.2客户端模块publicclassContactActivityextendsActivity{ListViewlistView;ContactAdapteradapter;I__ppapp;//好友列表List__Contactlist=newArrayList;//每一个activity必备的监听器IO__essageRe__iveListenerlistener=newIO__essageRe__iveListener{@OverridepublicvoidonRe__ivefinal__Messagemsg{ThreadUtils.runUnThreadnewRunnable{@Overridepublicvoidrun{Stringjson=msg.content;Gsongson=newGson;//反序列化__ContactListtempList=gson.fromJsonjson__ContactList.class;//刷新好友列表//首先设置列表值list.clear;list.addAlltempList.buddyList;//其次再刷新列表ifadapter!=null{adapter.notifyDataSetChanged;}}}};}};@OverrideprotectedvoidonCreateBundles__edInstan__State{super.onCreates__edInstan__State;app=I__ppgetApplication;app.getCommunicaCore.addO__essageRe__iveListenerlistener;//处理好友列表//先取出(app)Stringjson=app.getBuddyListJson;//再处理从json反序列化成对象Gsongson=newGson;__ContactListtempList=gson.fromJsonjson__ContactList.class;//把上面完成的对象加入到list里面去list.addAlltempList.buddyList;//绑定适配器adapter=newContactAdapterthislist;listView.setAdapteradapter;//添加item的click监听器listView.setOnItemClickListenernewListView.OnItemClickListener{@OverridepublicvoidonItemClickAdapterViewparentViewviewintpositionlongid{//获取数据__Contactcontact=list.getposition;Intentintent=newIntentgetBaseContextChatActivity.class;intent.putExtraaccountcontact.account;intent.putExtranickcontact.nick;startActivityintent;}};}protectedvoidonDestroy{super.onDestroy;app.getCommunicaCore.removeO__essageRe__iveListenerlistener;}}publicclassLoginActivityextendsActivity{EditTextaccountpsw;Stringusernamepassword;__CommunicationCorecommunicaCore;@OverrideprotectedvoidonCreateBundles__edInstan__State{super.onCreates__edInstan__State;//网络链接ThreadUtils.runInThreadnewRunnable{@Overridepublicvoidrun{try{communicaCore.addO__essageRe__iveListenerlistener;communicaCore.connection;}catchEx__ptione{e.printStackTra__;}}};}//被回调本activity处理消息的核心IO__essageRe__iveListenerlistener=newIO__essageRe__iveListener{@OverridepublicvoidonRe__ivefinal__Messagemsg{ThreadUtils.runUnThreadnewRunnable{@Overridepublicvoidrun{I__ppapp=I__ppgetApplication;//保存账号app.setAccountLong.parseLongaccount.getText.toString.trim;//保存连接(被保存过的连接叫长连接)app.setCommunicaCorecommunicaCore;//保存好友列表好友列表在contentapp.setBuddyListJsonmsg.content;Toast.__keTextgetBaseContext登录成功Toast.LENGTH_LONG.show;//启动__人界面startActivitynewIntentgetBaseContextContactActivity.class;//启动核心服务(启动式)startServi__newIntentgetBaseContextCoreServi__.class;finish;}else{Toast.__keTextgetBaseContext登陆失败Toast.LENGTH_LONG.show;}}};}};//只发送消息,不处理消息publicvoidloginViewv{username=account.getText.toString.trim;password=psw.getText.toString;ThreadUtils.runInThreadnewRunnable{@Overridepublicvoidrun{try{__Messagemsg=new__Message;msg.type=__MessageType.MSG_TYPE_LOGIN;msg.content=username+#+password;communicaCore.sendMessagemsg;}catchEx__ptione{e.printStackTra__;}}};}@OverrideprotectedvoidonDestroy{super.onDestroy;communicaCore.removeO__essageRe__iveListenerlistener;}}xmlversion=
1.0encoding=utf-8android:layout_width=__tch_parentandroid:layout_height=__tch_parentandroid:orientation=verticalTextViewandroid:textSize=30spandroid:text=__人android:layout_width=__tch_parentandroid:background=#0099ffandroid:textColor=#ffffffandroid:gr__ity=__nterandroid:layout_height=50dp/ListViewandroid:layout_width=__tch_parentandroid:layout_height=0dpandroid:cacheColorHint=@android:color/transparentandroid:divider=#0099ffandroid:dividerHeight=1dpandroid:id=@+id/listview_contactandroid:layout_weight=1/ListView/LinearLayoutxmlversion=
1.0encoding=utf-8android:layout_width=__tch_parentandroid:layout_height=wrap_contentandroid:orientation=horizontal!--头像--I__geViewandroid:id=@+id/headandroid:layout_width=40dpandroid:layout_height=40dpandroid:layout_gr__ity=__nter_verticalandroid:layout___rginLeft=20dpandroid:src=@drawable/ic_launcher/LinearLayoutandroid:layout_width=__tch_parentandroid:layout_height=wrap_contentandroid:orientation=vertical!--昵称--TextViewandroid:id=@+id/nickandroid:layout_width=__tch_parentandroid:layout_height=wrap_contentandroid:text=来超android:textSize=20spandroid:textColor=#ff0000android:gr__ity=left|__nter_vertical/!--状态--TextViewandroid:id=@+id/descandroid:layout_width=__tch_parentandroid:layout_height=wrap_contentandroid:text=[在线]android:textSize=15spandroid:textColor=#000000android:gr__ity=left|__nter_vertical//LinearLayout/LinearLayoutxmlversion=
1.0encoding=utf-8android:layout_width=__tch_parentandroid:layout_height=__tch_parentandroid:background=@drawable/splash_bgI__geViewandroid:layout___nterInParent=trueandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:src=@drawable/conversation_bg_logo//RelativeLayout
5、测试分析
5.1客户端具体功能实现登录功能建立与服务器的连接并登录,能显示登录成功信息 界面显示将好友显示在__人列表中,并可以通过__进入会话界面,进行与好友的聊天 聊天功能当好友发送消息时会显示在会话界面用户也同时可以在输入框中输入相应信息__发送与好友聊天 信息提示Toast提示到来信息的好友账号 用户在客户端__应用程序图标后启动应用如下图图5-1客户端启动界面进入__人界面后,__好友账号,进入聊天功能当好友发送消息时,会显示在会话界面用户也同时可以在输入框中输入相应信息__发送与好友聊天聊天界面如下图图5-2与好友聊天界面心得体会本课程设计紧紧围绕了基于Android平台的__聊天程序进行研究说明,针对基于Android平台的应用程序__已经及时通讯进行了深入的探讨__聊天程序是当今社会实现人机交互的重要技术支撑,通过分析相关__聊天程序的各种功能需求,并用面向对象语言J__a语言实现并封装好这些功能然后又通过需求分析设计了__聊天程序所需的各个功能模块,并在需求分析的基础上最终通过编程封装实现了此聊天程序此聊天程序流程主要分为登录界面、好友界面、回话界面模块Android技术比较新颖,入门感觉稍微有些难,不过本系统能够让用户实现一对一的聊天、实现文字的收发,网络技术支持能功能,但是由于本人的经验不足和时间有限,以及对一些相关的技术、思想、理论掌握的还不够透彻,因此本系统中还存在许多不足、许多待完善的地方例如界面不够美观等等这些不足之处,会在今后的学习中不断的完善和维护,希望能够达到更好的效果经过课程这个设计的磨练,对__通讯行业有了更深的了解,也有了更多的知识来充实自己的大脑指导老师意见成绩:教师签名年月日进入输入账号及__服务器验证登录成功。