本科毕业设计-新浪微博android客户端的实现_第1页
本科毕业设计-新浪微博android客户端的实现_第2页
本科毕业设计-新浪微博android客户端的实现_第3页
本科毕业设计-新浪微博android客户端的实现_第4页
本科毕业设计-新浪微博android客户端的实现_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科生毕业设计(论文)微博客户端的设计开发微博客户端的设计开发计08-3班题目:姓名:学号:班级:二〇一二年六月中国矿业大学本科生毕业设计姓名:学号:学院:计算机科学与技术专业:计算机科学与技术设计题目:微博客户端的设计开发专题:指导教师:徐慧职称:讲师2012年6月徐州

中国矿业大学毕业设计任务书学院计算机科学与技术专业年级计08级学生姓名任务下达日期:2012年1月10日毕业设计日期:2012年1月4日至2011年6月10日毕业设计题目:微博客户端的设计开发毕业设计专题题目:毕业设计主要内容和要求:毕业设计的软件内容及要求:1.

用户界面美观实用,便于各功能页面导航。2.

系统各功能模块要明确划分。论文的内容及要求:1.

论文对系统设计的思想进行详细描述,介绍整个软件开发过程。2.

进行系统需求分析,概要设计,详细设计,性能测试。3.

说明开发过程中遇到的问题极其解决方法。4.

最后写出软件开发的体会及收获。5.

严格按照软件工程要求的格式编写文档。院长签字:指导教师签字:

中国矿业大学毕业设计指导教师评阅书指导教师评语(①基础理论及基本技能的掌握;②独立解决实际问题的能力;③研究内容的理论依据和技术方法;④取得的主要成果及创新点;⑤工作态度及工作量;⑥总体评价及建议成绩;⑦存在问题;⑧是否同意答辩等):成绩:指导教师签字:年月日

中国矿业大学毕业设计评阅教师评阅书指导教师评语(①基础理论及基本技能的掌握;②独立解决实际问题的能力;③研究内容的理论依据和技术方法;④取得的主要成果及创新点;⑤工作态度及工作量;⑥总体评价及建议成绩;⑦存在问题;⑧是否同意答辩等):成绩:指导教师签字:年月日中国矿业大学毕业设计答辩及综合成绩答辩情况提出问题回答问题答辩委员会评语及建议成绩:答辩委员会主任签字:年月日学院领导小组综合评定成绩学院领导小组负责人:年月日摘要微博即MicroBlog,网上昵称围脖,是一种非正式的迷你型博客,是一个基于用户关系的信息分享、传播及获取平台。用户可以通过WEB、WAP以及各种客户端组件个人社区,以140字左右的文字更新信息,并实现即时分享。它是一种互动及传播性极快的工具,传播速度甚至比媒体还快。本文阐述了新浪微博客户端的各种相关知识,尤其对Android客户端作了详细的介绍,同时将设计过程中所用到的主要方法及控件进行了详细说明。此次毕业设计以Android操作系统作为开发平台,Eclipse作为开发环境,参照新浪提供的API,进行微博客户端软件的设计与实现。本软件实现了微博首页获取数据、我的资料、好友资料、我的关注、我的粉丝、收藏微博、评论微博、转发微博、发表微博等功能,具备了一般微博所具有的功能,具有较强的实用性。关键词:Android平台;微博;OAuth认证协议

ABSTRACT Microbloggingisarelationshipbasedonuserinformation-sharing,disseminationandaccessplatform.UserscanuseWEB,WAPindividualcomponentsandavarietyofclientcommunitiestointerabout140wordsoftextupdates,andsharethisinstantly.Itisaninteractiveandfastspreadtool,spreadevenfasterthanthetraditionalmedia. ThisarticleintroducesthedevelopmentofAndroid-basedmicrobloggingsystem,thesystemisdividedintoserver-sideandmobileclient.MicrobloggingsystemusestheMVCdesignpattern,thethree-layerarchitecture.ThedevelopmenttoolsistheEclipse.ThedevelopingenvironmentisJDK7.0andtheAndroid2.3andusesinarestAPI.Thissinaandroidmicroblogimplementlogining,register,releasemicroblogging,visittheFriendsHomePage,uploadphotos,updatestatusandsoon.Excepttheabovefunctions,inmobileclient,thetablefordiscussionandreal-timemicrobloggingupdateremindersareadded.DesignandImplementationofthetablefunctionistoresolvetheproblemofthemicrobloggingandmobilizetheenthusiasmoftheusers.Keywords:Android;Microblog;OAuthprotocol

目录1绪论 页1绪论1.1开发背景及意义1.1.1开发背景2006年3月,博客技术先驱blogger创始人埃文·威廉姆斯(EvanWilliams)创建的新兴公司Twitter推出了微博服务。在最初阶段,这项服务只是用于向好友的手机发送文本信息。Twitter英文原意为小鸟的叽叽喳喳声,用户能用如发手机短信的数百种工具更新信息。Twitter的出现把世人的眼光引入了微博的小小世界里。Twitter是一个社交网络及微博客服务。现在,用户可以经由SMS、即时通信、电邮、Twitter网站或Twitter客户端软件(如Twitterrific)输入最多140字的文字更新,Twitter被Alexa网页流量统计评定为最受欢迎的50个网络应用之一。在2007年5月,国际间计算总共有111个类似Twitter的网站。然而,最值得注意的仍是Twitter,它于2007年在得克萨斯州奥斯汀举办的南非西南会议赢得了博客类的网站奖。Twitter的主要竞争对手是Plurk和Jaiku。后来微博客的新服务特色持续诞生,例如Plurk有时间轴可以观看整合了视讯和照片的分享,Identi、Pownce整合了微薄客加上档案分享和事件邀请。Twitter在国外的“大红大紫”,令国内有些人终于坐不住了。2005年从校内网起家的王兴,在2006年把企业卖给千橡互动后,于第二年建立了饭否网。同样擅长技术活的SwiSen也瞄准了这个行业,很快清新、简约的随心微博也开始正式上线。而腾讯作为一个拥有4.1亿QQ用户的企业,看着用户对随时随地发布自己状态的强烈需求后,也忍不住尝试了一把,2007年8月13日腾讯滔滔上线。但事实证明,Twitter建立的“微型王国”不是在短时间内掘出黄金的浅矿,国内的微博目在当时尚处于慢热的状态。据悉,随心微博、饭否网等目前仅拥有几十万用户,每月处理几千万条信息。国内微博不约而同地将现在的目光放在了产品调整以及服务完善上,在尚无法吸引到风险投资的眼光之前,他们最需要做的可能是如何靠自己的能力继续活下去。从2007年中国第一家带有微博色彩的饭否网开张,到2009年,微博这个全新的名词,以摧枯拉朽的姿态扫荡世界,打败奥巴马、甲流等等名词,成为全世界最流行的词汇。伴随而来的,是一场微博世界人气的争夺战,大批量的名人被各大网站招揽,各路名人也以微博为平台,在网络世界里聚集人气,同样,新的传播工具也造就了无数的草根英雄,从默默无闻到新的话语传播者,往往只在一夜之间、寥寥数语。2009年7月中旬开始,国内大批老牌微博产品(饭否、腾讯滔滔等)停止运营,一些新产品开始进入人们的视野,像1月份开放的大围脖,6月份开放的Follow5,7月份开放的贫嘴,8月份开放的新浪微博。其中Follow5在2009年7月19日孙楠大连演唱会上的亮相,是国内第一次将微博引入大型演艺活动,与twitter当年的发展颇有几分神似。2010年国内微博迎来了春天,微博像雨后春笋般崛起。四大门户网站均开设微博。根据相关公开数据,截至2010年1月份,微博类产品在全球已经拥有7500万注册用户。中国互联网络信息中心(CNNIC)发布的《第28次中国互联网络发展状况统计报告》报告显示,2011年上半年,中国微博用户从6331万增至1.95亿,增长约2倍。该《报告》指出,中国互联网的普及率增至36.2%,较2010年增加1.9%。2011年上半年,我国微博用户数量从6331万增至1.95亿,半年增幅高达208.9%。微博在网民中的普及率从13.8%增至40.2%。从2010年底至今,手机微博在网民中的使用率比例从15.5%上升到34%。至今,新浪微博用户数超过1亿,得益于抢占了先机,而且在整体的战略执行上也比较彻底到位,所以获得了现在的地位。仅仅三年时间,新浪微博就为新浪生下了一个价值几十亿美金的‘金蛋’。开放API(OpenAPI)是SaaS(SoftwareasaService,软件即服务)模式下常见的一种应用,网站的服务商将自己的网站服务封装成一系列API(ApplicationProgrammingInterface,应用编程接口)开放出去,供第三方开发者使用,这种行为就叫做开放网站的API,所开放的API就被称作OpenAPI(开放API)。网站提供开放平台的API后,可以吸引一些第三方的开发人员在该平台上开发商业应用,平台提供商可以获得更多的流量与市场份额,第三方开发者不需要庞大的硬件与技术投资就可以轻松快捷的创业,从而达到双赢的目的,开放API是大平台发展、共享的途径,让开发者开发一个有价值应用,付出的成本更少,成功的机会更多。今天,OpenAPI作为互联网在线服务的发展基础,已经成为越来越多互联网企业发展服务的必然选择。OpenAPI的典型成功范例是GoogleMapsAPI和Twitter,GoogleMaps有Google这样的大公司支持,成功当然并不奇怪,但是Twitter的成功就很能说明问题。事实上,如果Twitter仅仅是一个网页形式的微博客的话,Jaiku就可以轻松的将其打败,Twitter根本不可能取得今天的成就。Twitter的活力就在于开放API,Twitter的成功和开放API密不可分。Twitter的开放API可以激发个人创作的积极性,引来了大量的第三方应用,这些第三方应用同时又扩大了Twitter原有的功能,让Twitter更好用,从而极大丰富了Twitter平台自身的功用和乐趣,现在,Twitter超过一半的流量都是来自第三方API。随着Twitter的OpenAPI发布数量不断增加,运营过程中也开始暴露出一些问题。OpenAPI的巨大的访问量引起了Twitter种种性能问题,使得Twitter的稳定性大为降低,为了支持大量的外部API,Twitter宕机频繁,这估计是几乎所有Twitter用户都遇到过的现象。但即使如此,Twitter也没有放弃对OpenAPI的支持。因为开放API是历史的潮流,是必然的趋势,顺之者昌,逆之者亡,Twitter之所以击败众多各式各样的微博客网站,开放API功不可没。国内的主流微博服务也纷纷开放了api,供广大第三方开发者接入微博提供了途径。本论文就是利用新浪微博的开放api来完成的。1.1.2意义微博,有点像聊天室或者说是像茶楼酒肆。是沟通人与人之间思想,交流知识,讨论问题和交换观点的网络交际平台。在这个平台上首先是虚拟的人(性别,年龄,职业,喜好,职务...等?)共同谈论你所感兴趣的任何话题,通过你们之间交流争辩让你对它有更进一步的了解和认知。微博的传播速度更快,关注的人更多,时效性更强。微博上有许多信息是在传统媒体上看不到的,而公众对公共话题天生有一种关注心态,在微博上企业和客户之间不再是单纯的买卖关系,微博用好了,就能够在企业用户中培养出超越买卖的情感关系,在市场竞争中游刃有余。传统的企业口碑营销,偏重在认识的人之间的口碑,但现在,越来越多的年轻人相信网络社群上不认识的“亲朋好友”的评价。因此,赢得网友的口碑,对企业而言,几乎跟花钱做广告一样重要。微博客的出现丰富了企业网络营销的手段,帮助企业“赢得”陌生人的口碑。新浪微博主要用户群体集中在影视明星、企业高管、经济学者、传媒专家、营销策划人、评论员、主持人(主播)、创业者、网络红人,这些人基本上代表着颠覆与变革、创新与时尚。微博客作为一个新的交流互动平台,正在受到越来越多人的青睐。相比博客而言,微博客使用更加简单,用户所付出的单位成本、精力投入都更少,写作门槛更低,用户扩展更为迅速,为可能实现的媒体信息传播积累了庞大的通讯员队伍。同时,整合各类工具尤其是手机短信的优势,微博客具备了实时传播的特性,在面对突发新闻事件时,微博客的报道速度往往能领先于传统媒体。随着微博的“客”流量不但呈爆炸式增长,而且其影响力也与日俱增。微博客迅速成为中国企业及时传播信息,增加用户与企业粘性的营销利器。众多中小企业纷纷设立官方微博客,安排专人在新浪微博客开博,与粉丝紧密互动,积极推广企业品牌。微博预示着个体的力量不再孱弱,它在影响和改变这个世界上正发挥越来越大的作用。企业微博的最大价值在于构建与用户沟通的渠道和平台,高效传达及展现企业产品与服务,实现企业品牌的快速传播。越来越多的传统企业成功借助微博宣传企业品牌与企业文化,通过建立口碑来获得长期利益。1.2开发工具及运行环境1.2.1开发工具操作系统:Windows7,SP1开发工具:EclipseIDEforJavaDevelopers,Version:IndigoServiceRelease2插件:AndroidDevelopmentTools(ADT)PluginforEclipse开发语言:Java1.2.2运行环境手机型号:摩托罗拉MB525操作系统:AndroidGingerbread(2.3.7)硬件参数:CPU:德州仪器OMAP3610,800MHzRam:512MB屏幕:3.7寸,854×480像素

2项目所用技术介绍2.1Andorid简介Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由AndyRubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的BlackberryOS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。2.2Android系统架构Android的系统架构和其它操作系统一样,采用了分层的架构。android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程(如:python、lua、tcl、php等等),还有其他诸如:Qt(qtforandroid)、Mono(monoforandroid)等一些著名编程框架也开始支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。另外,谷歌还在2009年特别发布了针对初学者的AndroidSimple语言,该语言类似Basic语言。而在网页编程语言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已经支持Android开发。而在Android系统底层方面,Android使用C/C++作为开发语言。2.3系统组件Android开发四大组件分别是:活动(Activity):用于表现功能。服务(Service):后台运行服务,不提供界面呈现。广播接收器(BroadcastReceiver):用于接收广播。内容提供商(ContentProvider):支持在多个应用中存储和读取数据,相当于数据库。2.3.1ActivityAndroid中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity可以算是开发者遇到的最频繁,也是Android当中最基本的模块之一。在Android的程序当中,Activity一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么Activity就相当于一个网页。在Activity当中可以添加一些Button、Checkbox等控件。可以看到Activity概念和网页的概念相当类似。一般一个Android应用是由多个Activity组成的。这多个Activity之间可以进行相互跳转,例如,按下一个Button按钮后,可能会跳转到其他的Activity。和网页跳转稍微有些不一样的是,Activity之间的跳转有可能返回值,例如,从ActivityA跳转到ActivityB,那么当ActivityB运行结束的时候,有可能会给ActivityA一个返回值。这样做在很多时候是相当方便的。当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。用户可以通过回退操作返回到以前打开过的屏幕。我们可以选择性的移除一些没有必要保留的屏幕,应为Android会把每个应用的开始到当前的每个屏幕保存在堆栈中。2.3.2ServiceService是android系统中的一种组件,它跟Activity的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service是没有界面的长生命周期的代码。Service是一种程序,它可以运行很长时间,但是它却没有用户界面。这么说有点枯燥,来看个例子。打开一个音乐播放器的程序,这个时候若想上网了,那么,我们打开Android浏览器,这个时候虽然我们已经进入了浏览器这个程序,但是,歌曲播放并没有停止,而是在后台继续一首接着一首的播放。其实这个播放就是由播放音乐的Service进行控制。当然这个播放音乐的Service也可以停止,例如,当播放列表里边的歌曲都结束,或者用户按下了停止音乐播放的快捷键等。service可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务嘛,总是藏在后头的。2.3.3BroadcastReceiver在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的Broadcast进行过滤接受并响应的一类组件。可以使用BroadcastReceiver来让应用对一个外部的事件做出响应。这是非常有意思的,例如,当电话呼入这个外部事件到来的时候,可以利用BroadcastReceiver进行处理。例如,当下载一个程序成功完成的时候,仍然可以利用BroadcastReceiver进行处理。BroadcastReceiver不能生成UI,也就是说对于用户来说不是透明的,用户是看不到的。BroadcastReceiver通过NotificationManager来通知用户这些事情发生了。BroadcastReceiver既可以在AndroidManifest.xml中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用Context.sendBroadcast()将它们自己的intentbroadcasts广播给其他应用程序。注册BroadcastReceiver有两种方式:(1)在AndroidManifest.xml进行注册。这种方法有一个特点即使你的应用程序已经关闭了,但这个BroadcastReceiver依然会接受广播出来的对象,也就是说无论你这个应用程序时开还是关都属于活动状态都可以接受到广播的事件;(2)在代码中注册广播。第一种俗称静态注册,第二种俗称动态注册,这两种注册BroadcastReceiver的区别:动态注册较静态注册灵活。实验证明:当静态注册一个BroadcastReceiver时,不论应用程序是启动与否。都可以接受对应的广播。动态注册的时候,如果不执行unregisterReceiver();方法取消注册,跟静态是一样的。但是如果执行该方法,当执行过以后,就不能接受广播了。2.3.4ContentProviderContentProvider是Android提供的第三方应用数据的访问方案。在Android中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件、等等内容,都是不允许其他直接访问的。Andorid当然不会真的把每个应用都做成一座孤岛,它为所有应用都准备了一扇窗,这就是ContentProvider。应用想对外提供的数据,可以通过派生ContentProvider类,封装成一枚ContentProvider,每个ContentProvider都用一个uri作为独立的标识,形如:content://com.xxxxx。所有东西看着像REST的样子,但实际上,它比REST更为灵活。和REST类似,uri也可以有两种类型,一种是带id的,另一种是列表的,但实现者不需要按照这个模式来做,给你id的uri你也可以返回列表类型的数据,只要调用者明白,就无妨,不用苛求所谓的REST。另外,ContentProvider不和REST一样只有uri可用,还可以接受Projection,Selection,OrderBy等参数,这样,就可以像数据库那样进行投影,选择和排序。查询到的结果,以Cursor(参见:reference/android/database/Cursor.html)的形式进行返回,调用者可以移动Cursor来访问各列的数据。ContentProvider屏蔽了内部数据的存储细节,向外提供了上述统一的接口模型,这样的抽象层次,大大简化了上层应用的书写,也对数据的整合提供了更方便的途径。ContentProvider内部,常用数据库来实现,Android提供了强大的Sqlite支持,但很多时候,你也可以封装文件或其他混合的数据。在各大组件中,Service和ContentProvider都是那种需要持续访问的。Service如果是一个耗时的场景,往往会提供异步访问的接口,而ContentProvider不论效率如何,都提供的是约定的同步访问接口。3系统分析3.1功能需求此次程序设计任务是Android平台下的新浪微博客户端设计,程序将在真实手机运行调试。此次程序设计用户界面要求较为友好,由于针对的用户为Android智能手机用户,因此程序的操作全部可以通过触控完成操作。本新浪微博客户端要求设计合理.在设计完成后,要求程序能够实现新浪微博的登录功能。同时,程序还必须能够实现对对新浪微博的首页信息获取,用户资料,好友资料,发表微博,用户的关注,用户的粉丝,转发微博,评论微博,收藏微博,我发表的微博等。最后,新浪微博获取信息要具有较高的执行效率。此次程序设计的操作系统要求为Windows7或Linux。此次程序设计需要在Eclipse环境下开发。本客户端的数据都是通过网络来自于新浪的服务器,产生的数据也是上传到新浪的服务器,在客户端存储的只有OAuth产生的一些省份识别信息,所以本客户端无需使用数据库。基于系统需求分析,该系统需要实现以下功能:(1)用户登录授权:当用户第一次使用该软件时,会打开新浪微博的授权页面,如果是老用户,则授权登录,若是新用户,则注册新浪微博,然后跳转到微博首页。(2)发布微博:发布微博是微博的基本功能,用户将自己想要向外界传达的信息进行发布,这是用户向外传播信息的最主要的途径与方法。(3)修改用户个人信息:用户可以根据个人需要修改自己的信息,包括用户名、email、心情、以及上传头像或者更改为其他头像。(4)查看微博更新:在微博的首页要显示用户关注的博友的最近微博更新,并能够查看微博的评论,以及查看博友的主页。3.2系统用例图图3-1系统用例图4系统设计4.1程序总体架构在三层结构中(图4-1),解决了客户机/服务器模式面临的许多问题。通过划分客户与服务器之间的功能,分布式计算提供了一种把应用中的用户界面从企业逻辑中分离出来的自然方法。在分布式环境下,企业逻辑提供了一种把应用中的用户界面从企业逻辑中分离出来的自然方法。在分布式环境下,企业逻辑集中地安装在应用服务器上,这样就降低了客户端的负载,同时对敏感信息的访问也可以得到很好的控制。采用分布式计算有着多方面的技术优势,包括:1)封装性2)性能3)全性管理在分布式计算模式中,由于所有的商业逻辑都驻留在服务器端,信息管理部就可以十分方便地监控服务器的运行情况,很容易地控制访问服务器以及与服务器应用打交道人员的数量。这可以大大简化管理员对系统的管理,减轻系统维护的工作量,并确保系统的可靠运行。图4-1三层客户/服务器模型软件设计时,考虑到整个系统的延续性和可扩充性,我们将系统应用体系分为三部分:用户表现层、数据访问层、商业逻辑层。(1)用户表现层:处理用户界面的功能;(2)数据访问层:在通常情况下指数据库;(3)商业逻辑层:指在程序中做出职能决策的那一部分功能。微博客户端的结构图如下所示:

图4-2微博客户端结构图4.2模块功能设计本新浪微博客户端大致分为首页、微博详情、用户信息、发布微博、查看评论等模块,分别负责不同的功能:授权模块:访问用户的信息与数据需要经过用户的授权,所以必须有用户授权的模块本软件才能正常使用。首页:是用户浏览微博的界面,会将用户所关注的人的微博按照时间先后顺序排列,其中会显示微博的作者、发布时间、内容、转发评论数量、发布方式等。首页是用户使用最多的界面,也是软件初次打开的默认界面。微博详情:当用户在首页浏览微博的时候,点击某一条微博就会进入到微博详情的界面,这个界面会更详细的展示用户所点击的那条微博,并且提供转发和评论的功能按钮。用户信息:用户信息是展示用户的界面,何以展示用户本身的信息并修改,也可以查看任何用户感兴趣的用户。发布微博:用来发布新微博的界面,转发和评论的时候也会用到这个模块。查看评论:用来浏览某一条微博的评论。

5详细设计与编码下面就对每个模块的设计与开发进行详细叙述:5.1授权模块新浪微博采用OAuth授权方式来使第三方应用访问用户的数据,这样的话第三方应用就可以在不知道用户帐号和密码的情况下获取用户数据。OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAuth的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAuth是安全的。OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAuth认证服务,任何服务提供商都可以实现自身的OAuth认证服务,因而OAuth是开放的。业界提供了OAuth的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAuth是简易的。目前互联网很多服务如OpenAPI,很多大公司如Google,Yahoo,Microsoft等都提供了OAuth认证服务,这些都足以说明OAuth标准逐渐成为开放资源授权的标准。5.1.1OAuth相关的三个URLRequestTokenURL:获取未授权的RequestToken服务地址;UserAuthorizationURL:获取用户授权的RequestToken服务地址;AccessTokenURL:用授权的RequestToken换取AccessToken的服务地址。5.1.2OAuth相关的参数定义OAUTH_consumer_key:使用者的ID,OAuth服务的直接使用者是开发者开发出来的应用。所以该参数值的获取一般是要去OAuth服务提供商处注册一个应用,再获取该应用的OAUTH_consumer_key。OAUTH_consumer_secret:OAUTH_consumer_key对应的密钥。OAUTH_token:OAUTH进行到最后一步得到的一个“令牌”,通过此“令牌”请求资源的网站就可以去拥有资源的网站抓取任意有权限可以被抓取的资源。OAUTH_token_secret:OAUTH_token对应的私钥OAUTH_signature_method:请求串的签名方法,应用每次向OAuth三个服务地址发送请求时,必须对请求进行签名。签名的方法有:HMAC-SHA1、RSA-SHA1与PLAINTEXT等三种。OAUTH_signature:用上面的签名方法对请求的签名。OAUTH_timestamp:发起请求的时间戳,其值是距197000:00:00GMT的秒数,必须是大于0的整数。本次请求的时间戳必须大于或者等于上次的时间戳。OAUTH_nonce:随机生成的字符串,用于防止请求的重放,防止外界的非法攻击。OAUTH_version:OAuth的版本号。5.1.3OAuth认证授权流程OAuth认证授权就三个步骤,三句话可以概括:1.获取未授权的RequestToken2.获取用户授权的RequestToken3.用授权的RequestToken换取AccessToken当应用拿到AccessToken后,就可以有权访问用户授权的资源了。上面的三个步骤中,每个步骤分别请求一个URL,并且收到相关信息,并且拿到上步的相关信息去请求接下来的URL直到拿到AccessToken。具体每步执行信息如下:A.使用者(第三方应用)向OAUTH服务提供商请求未授权的RequestToken。向RequestTokenURL发起请求,请求需要带上参数。B.OAuth服务提供商同意使用者的请求,并向其颁发未经用户授权的oauth_token与对应的oauth_token_secret,并返回给使用者。C.使用者向OAuth服务提供商请求用户授权的RequestToken。向UserAuthorizationURL发起请求,请求带上上步拿到的未授权的token与其密钥。D.OAuth服务提供商将引导用户授权。该过程可能会提示用户,你想将哪些受保护的资源授权给该应用。此步可能会返回授权的RequestToken也可能不返回。如YahooOAuth就不会返回任何信息给使用者。E.RequestToken授权后,使用者将向AccessTokenURL发起请求,将上步授权的RequestToken换取成AccessToken。F.OAuth服务提供商同意使用者的请求,并向其颁发AccessToken与对应的密钥,并返回给使用者。G.使用者以后就可以使用上步返回的AccessToken访问用户授权的资源。从上面的步骤可以看出,用户始终没有将其用户名与密码等信息提供给使用者(第三方软件),从而更安全。用OAuth实现背景一节中的典型案例:当服务B(打印服务)要访问用户的服务A(图片服务)时,通过OAuth机制,服务B向服务A请求未经用户授权的RequestToken后,服务A将引导用户在服务A的网站上登录,并询问用户是否将图片服务授权给服务B。用户同意后,服务B就可以访问用户在服务A上的图片服务。整个过程服务B没有触及到用户在服务A的帐号信息。本软件使用新浪微博的androidSDK来辅助开发,这里面已经集成了一个开源的javaOAuth认证包:signpost:/p/oauth-signpost/。第三方应用首先必须在新浪微博的开发者平台上注册成为开发者并且获得相应的appkey和appsecret才可以引导用户注册。新浪微博的开放平台网址:/。requestToken=weibo.getOAuthRequestToken("xiha://OAuthActivity");OAuthConstant.getInstance().setRequestToken(requestToken);url=requestToken.getAuthenticationURL();Intentintent=newIntent(XihaActivity.this,ActivityWebView.class);intent.putExtra("url",url);startActivity(intent);首先设置RequestToken,”xiha://OAuthActivity”是一个android系统定义的uri,类似于url,一个协议后跟着一个路径,当授权成功后就打开注册这个uri的页面。获取授权页面的url后,通过一个intent传到一个新的activity。在这个activity中,放置一个webview:web.loadUrl(url);这样来打开授权页面,效果如图5-1所示:图5-1授权页面截图授权成功后就会打开注册"xiha://OAuthActivity"这个uri的Activity。5.2微博首页模块首先在manifest文件中为首页的Activity下面这行代码:<intent-filter> <actionandroid:name="ent.action.VIEW"/> <categoryandroid:name="ent.category.DEFAULT"/> <categoryandroid:name="ent.category.BROWSABLE"/> <dataandroid:scheme="xiha"android:host="OAuthActivity"/></intent-filter>这样,当用户授权成功后就会打开这个Activity.在这个Activity中,主要是一个ListView,在ListView中的每一个条目中展示每一条微博。首先将获得的Access_token和Access_token_secret存储到sharedPreference中,这样的话用户只需在初次使用时需要授权,以后就可以直接获取数据了: prefs=PreferenceManager.getDefaultSharedPreferences(this); RequestTokenrequestToken=OAuthConstant.getInstance().getRequestToken(); AccessToken accessToken=requestToken.getAccessToken(uri.getQueryParameter("oauth_verifier"));SharedPreferences.Editoreditor=prefs.edit(); editor.putString("access_token",accessToken.getToken()); editor.putString("access_token_secret",accessToken.getTokenSecret()); mit();这样就存储量用户的认证数据。接下来我们获得用户关注的用户的微博,只需下面这两行代码: weibo=OAuthConstant.getInstance().getWeibo(); friendsTimeline=weibo.getHomeTimeline(newPaging(1,10));由于获取网络数据所消耗的时间较长,且手机的网络信号不稳定因素更多,所以我们将它放在独立的线程中来完成。当然可以用java的线程来实现,但是android为我们提供了更加简单和方便的方法,继承AsyncTask这个类并实现其中的doInBackground方法,把你希望在独立线程中执行的代码放在这个方法中,然后在主线程中执行该类对象的exectue方法就可以了。这里选择这中方法而不应java自身提供的线程机制还有一个原因,就是andorid系统规定,只能在主线程中执行对UI控件的操作,在其它线程中不行。但是在andorid提供的AsyncTask这个类允许在其它线程中对控件进行操作。 在这个类中还有一个方法叫onPostExecute的方法,它是一个回调函数,会在doInBackground执行完之后自动执行,但是是在主线程中执行,我们可以在这个方法中放置我们希望的语句。在这里我们会把获得的数据传给一个我们自己设置的Adapter。在Android中,用列表控件来显示一组数据,比如显示存储在数组中的很多人名,再比如显示从数据库查询出来的结果列表。Android将显示和数据分开来处理,在这二者中起到桥梁作用的就是adapter,示意图如下:图5-2列表控件、adapter、数据间的关系图图的左边的是一个列表控件,他只是一个空间的集合,内部含有以下子控件,真正的内容是显示在这些子控件中的,其实列表控件的就是一个空间的集合。图的右边是数据的集合,可以是数组,数据库,或者是任何组织方式的数据。图的中间就是adapter,它是列表控件和数据间的桥梁,其中他指向的那个R.layout.childview就是将要放置在列表控件中的子控件,所以说,是adapter决定了列表控件中显示的子控件的内容。Android本身提供了一些基本的adapter,继承结构如下:图5-3android系统内置adapter继承层次图其中的BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性,我们的Adapter就是继承的这个类。我们的Adapter需要把获得的数据作为构造函数的参数传入,然后来将其放入到相应的微博控件中。在Android系统中,ui控件可以用代码来构造,也可以用xml文件来描述。后者就像是html和css,只能描绘静态的外观,事件监听等动态事件还是需要用代码来完成的。后者将逻辑与展示分开,加快了开发效率,所以我们这次开发采用的是用xml文件来描述ui。我们先来定义子控件的样式,最终效果是这样的:图5-4子控件效果图这就是我们在主页模块中的每一个微博的样式,最外面它是一个水平方向的Linerlayout,右边又是一个数值方向的的Linerlayout,然后依次是用户姓名,微博发布的时间,微博内容,微博发布方式,转发和评论数量。下面我们来详细描述一下我们自己定义的adapter。自己的adapter继承自BaseAdapter,需要实现其中四个方法:int

getCount();返回数据的大小,这里我们返回从新浪微博一次取回的数据大小,所以我们返回friendsTimeline.size();Object

getItem(int

arg0);从数据集合中返回参数arg0指定的数据,我们这里返回第arg0个微博,所以我们的代码是这样的:returnfriendsTimeline.get(location);long

getItemId(int

position);返回指定位置的数据的ID,我们这里返回的是新浪提供的微博ID,代码如下:returnfriendsTimeline.get(position).getId();View

getView(int

position,

View

convertView,

ViewGroup

parent);这个方法很重要,它的功能是将相应的数据放到一个子控件中,然后返回子控件,供父控件(列表控件)使用。第一个参数指定出数据的位置,第二个参数是要传给父控件的子控件,第三个参数是父控件。因为在我们这个程序中这个adapter是专门为某一个列表控件实例化的,所以这最后一个参数对我们没有作用。首先,获得子控件:LayoutInflaterlayoutInflater=LayoutInflater.from(context);convertView=layoutInflater.inflate(R.layout.itemview,null);然后找到需要展示的数据:Statusstatus=friendsTimeline.get(position);下一步是将数据放到相应的控件中,我们这里以微博正文为例,其他控件的展示和这个大致相同:TextViewtexText=(TextView)singleView.findViewById(R.id.tvItemContent);textText.setText(decorateString(status.getText()));像这样的,把所有数据都放入到相应的控件中后,我们就可以返回这个待演示的子控件了:ReturncontertView;Android程序默认是在一个线程中执行,但是可以在需要的时候开辟新的线程。Andorid系统本身为线程间通信提供了hangler这样一个非常好用的工具。从新浪微博返回的微博数据中,所有的图片信息都是一个url,所以我们需要自己根据url从网络上下载,这又是一个耗时操作,所以这里我们用新线程来执行这个操作,获取图片后通过handler传回到主线程,在主线程中完成对imageView的操作。每一条微博最多会有两张图片,其中的用户头像一定会有,另外一个是微博配图,这个不一定都有,需要自行判断。如果某一条微博是转发微博,那么这个微博配图是出现在他转发的那条微博中的。在某一条微博中,需要换一种颜色显示人名和话题。新浪微博规定:@符号后面跟着的是某一个用户的名称,用一个空格或者是“:”来结束;用两个“#”来确定一个话题。微博中会有一些表情,由“[”和“]”括起来的,在现实时需要将其转化为相应的图片,比如[呵呵]这些代表表情的文本。在文本中找到某些文本,我们自然而然地想到了正则表达式这个强大的文本处理工具,我们这个程序就用正则表达式来处理这个高亮显示和表情准换问题。pattern=Ppile("@\\w+[\\s:]|@\\w+$|#\\w+#");m=pattern.matcher(content);第一行我们生成了一个模式,他有三个规则:第一个“@\\w+[\\s:]”匹配“@”和“:”之间或“@”和空格之间的用户名,第二个“@\\w+$”匹配位于字符串最后的用户名,最后一个规则“#\\w+#”匹配两个“#”号之间的话题名称。SpannableStringspannable=newSpannableString(content);构建一个SpannableString,这个就是我们要修饰的字符串,用原始的数据将其初始化。然后依次便利源字符串的每一个匹配规则,都将匹配的子字符串的颜色改为蓝色:while(m.find()){ intstart=m.start(); intend=m.end(); ForegroundColorSpanspan=newForegroundColorSpan(Color.BLUE); spannable.setSpan(span,start,end,Spannable.SPAN_INCLUSIVE_INCLUSIVE);}下面完成表情的替换。首先我们从网上下载新浪的表情包,将其放在资源文件夹Drawable中,这样的话系统就会为每个表情图片生成一个资源ID,我们就可以在程序中引用了。然后,制作一个Map容器,键是一个字符串,是表情的名称,比如“[呵呵]”,值是一个整形变量,就是这个表情图片的ID。然后我们用正则表达式匹配每一个表情,然后在这个map中找到相应的表情图片,然后替换,代码如下:Patternpattern=Ppile("\\[\\w+\\]");Matcherm=pattern.matcher(content);SpannableStringspannable=newSpannableString(content);while(m.find()){ intstart=m.start(); intend=m.end(); Integerid=BiaoQing.getInstance().getInt(m.group()); if(id!=null) { Drawabledrawable=context.getResources().getDrawable(id); drawable.setBounds(0,0,drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); ImageSpanspan=newImageSpan(drawable,ImageSpan.ALIGN_BASELINE);spannable.setSpan(span,start,end,Spannable.SPAN_INCLUSIVE_INCLUSIVE); }}在新浪微博返回的微博来源中,来源的形式是一个html的产链接标签,<a>来源</a>,这里还是用正则表达式将其汉字内容提取出来,具体代码和前面使用正则表达式类似。最后首页的效果图如图5-5所示:图5-5首页模块截图我们传给adapter的微博数量只有10条,当用户浏览到最后一条时,我们希望可以获得更多的数据,我们这里用ListView的footView来实现。首先用xml文件来定义一个footView,他的内容是两个控件,一个是按钮,一个是processBar,这两个控件不回同时出现,默认显示按钮,当用户点击时就加载新的数据,同时这个按钮隐藏,processBar出现;当加载完成后,processBar隐藏,按钮出现。在xml文件中,通过这个属性:android:visibility="gone"来隐藏控件。moreView=getLayoutInflater().inflate(R.layout.more,null);//获取在xml文件里定义的空间button=(Button)moreView.findViewById(R.id.morebutton);pb=(ProgressBar)moreView.findViewById(R.id.pb);moreLayout=(LinearLayout)moreView.findViewById(R.id.more);//找到相应的控件myListView.addFooterView(moreView);//给列表控件添加footerViewmoreLayout.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ pb.setVisibility(View.VISIBLE); moreLayout.setVisibility(View.GONE); weiboAdapter.getMoreStatus(); }});//给该控件添加事件监听器在这个按钮中调用了weiboAdapter的getMoreStatus()方法。在这个方法中,我们从新浪微博获取更多的数据,我们首先记录下已经获取的最后一条微博的ID,然后获取ID号小于这个ID的微博,当更新完数据后,记得要调用notifyDataSetChanged()这个方法,告诉系统数据发生了改变,系统会自动帮我们完成其它所需的工作。最后,别忘了把processBar隐藏起来,重新露出按钮,效果如下:图5-6“加载更多数据”按钮截图图5-7processBar截图5.2发布微博模块5.2.1基本功能发布新的微博、评论微博与转发微博都是在一个Activity中实现的,运行截图如图5-8所示。本Activity布局文件的最外层是一个竖直方向的现行布局,其中有三个元素,第一个控件是一个文本输入框,供用户输入要发布的微博内容;第二个控件是一个简单的按钮,用来执行发布这个动作;第三个控件是一个水平方向的线性布局,内部包含5个图像按钮,分别对应着发布微博时需要用到的五个功能:1.加入地理信息;2.添加图片;3.@其他人;4.添加话题;5.添加表情。在布局文件中,给文本输入框添加android:layout_weight="0.1"这条属性,就可使该控件占据所有未被使用的屏幕空间。同样的,在屏幕最下面的五个图片控件里都赋予相同的权值,他们就会平分屏幕上的空间。图5-8发布微博界面截图因为发布微博、评论微博和转发微博是使用的同一个Activity,所以必须区分开这三种不同的功能。本程序是在打开Activity的Intent的中设置一个名为type的整形变量作为额外的数据传入到要打开的Activity中,然后在Activity中再判断这个变量的值,根据不同的取值进行不同的操作,比如说:如果是发布新微博和评论微博,文本输入框里不需要填什么文字,只需要显示“亲,说点什么吧~”这样的提示字符就行了,但如果是转发微博,且用户要转发的微博本身也是一条转发的微博,此时就需要在文本输入框里设置上一个转发者转发时的评论,截图如图5-9所示:图5-9转发微博界面截图Android系统提供了一个TextWatcher这个接口,会监视文本输入框内部文字的变化;每当文本输入框里的文字发生变化时,接口内部的一些回调函数就会被执行,所以可以在这些函数内进行一些操作。本程序要将文本里代表表情的文字替换为图片,所以把相应的逻辑放入到这些回调函数中。需要注意的是,在这些函数内部修改文本框内部文字的话,会再次调用这些函数,如果不加注意的话就会造成死循环而使程序出错,这里的解决办法是把文本的长度作为文本是否改变的一个参照物,因为将文字替换为图片的话并不会改变文本框内字符串的长度。TextWatcher接口内有三个函数,分别是:afterTextChanged();beforeTextChanged();onTextChanged();这三个函数分别在文字改变之前、文字改变之后和文字改变时来执行,在我们这个程序中,我们只需要将我们的代码加入到任意一个函数内部,其余两个的函数体为空就可以了。实现了TextWacther,还需要将其绑定到相应的文本输入框才能发挥作用:myEditText.addTextChangedListener(this);要根据type的类型来设置button控件的一些相关属性。根据type的类型来设置“发布微博”按钮内部的提示文字:如果当前是发表新微博,就将提示文字设置为“发布微博”,如果是转发微博或评论微博,就将其设置为“转发微博”与“评论微博”。在该按钮的监听器内部,也要根据不同的type类型来调用不同的新浪微博接口。当发布微博完成之后,弹出一个提示框来提醒用户完成了相应的操作:Toast.makeText(ActivityUpdateStatus.this,"发布成功!",Toast.LENGTH_SHORT).show();最后,调用finish()这个方法来结束Activity的生命周期,使界面回到用户调用该Activity之前的的界面。5.2.2选择图片上传在页面底端的五个按钮中的第二个的功能是选择图片,最终与文本框中的文字一起传送到新浪微博服务器,发送一条有图片的微博。在相应的按钮监听器内添加如下代码:finalCharSequence[]items={"手机图片"}; AlertDialog.Builderbuilder=newAlertDialog.Builder( ActivityUpdateStatus.this); builder.setTitle("请选择"); builder.setItems(items,newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intitem){ Intentintent=newIntent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intent,1); } } });AlertDialogalert=builder.create(); alert.show();首先新建一个AlertDialog.Builder的对象,并对他进行相应的设置,其中的item是我们之前声明的字符串数组,它决定了最后弹出的对话框的按钮的数量和每个按钮上的提示文字,我们这个数组仅有一个元素,所以在后边添加的点击监听器中就不必判断是点击了哪个按钮,直接加入所需的代码就可以了。在监听器中,我们用一个间接的Intent来向Android系统请求相应的Avtivity。在我们之前使用Intent来启动Activity时,我们都通过类名准确告诉系统我们要启动的是哪个Activity,因为这些Activity都是我们自己写的,当然知道名字。但是如果我们想调用系统中其他应用的Activity,我们无法知道其准确的类名,所以就无法用这种方法来启动。Android为我们提供了解决方案:如果你希望你的Activity能够被其它应用调用,那么你在配置文件中可以对这个Activity进行设置,告诉系统你这个Activity可以完成什么样的工作;工作的类型是通过Android自定义的一些叫做Action的常量来决定的,比如浏览功能叫做:Intent.VIEW。在确定好功能之后,还要指定打开文件的类型,比如要浏览的资源类型是图片,就需要设置资源类型为Image/*。在我们这个例子当中,我们希望获得一张图片的位置,所以我们设置Action的类型为Intent.ACTION_GET_CONTENT。因为我们希望获得图片位置,所以我们通过startActivityForResult(intent,1)这个方法来启动Activity,当我们调用的Activity结束后,会自动执行我们Activity的onActivityResult()方法,这样就会执行相应的操作。在这个方法中,startActivityForResult(intent,1)这个函数的第二个参数是一个标记,这个标记会当你调用的Activity结束是传入onActivityResult(),这样在一个Activity中就可以这样调用多个Activity而不会发生混乱。在onActivityResult()中加入如下代码: try{ Uriuri=data.getData(); ContentResolvercr=this.getContentResolver(); Bitmapbitmap=BitmapFactory.decodeStream(cr .openInputStream(uri)); ByteArrayOutputStream stream=newByteArrayOutputStream(); press(Bitmap.CompressFormat.PNG,100,stream); byte[]byteArray=stream.toByteArray(); image=newImageItem(byteArray); }catch(FileNotFoundExceptione){ Log.e("Exception",e.getMessage(),e); }5.2.3@好友、添加热点话题和表情在发布微博界面的最下端的后三个按钮的功能分别是:@好友、添加热点话题和添加表情。在这三个按钮的监听器的内部的工作是一样的,就是打开一个Activity。因为所作的工作有很大的共性,所以可以在一个Activity中完成,一些不同的地方可以通过在Intent中添加额外参宿加以区别。在监听器中加入代码:Intentintent=newIntent(ActivityUpdateStatus.this, ActivityUpdateStatusListView.class);intent.putExtra("type",2);startActivityForResult(intent,2);在对应的Activity中只有一个<ListView>控件和一个<GridView>控件,用来展示数据。通过检查“type”的类型为其构造不同的适配器。如果是@好友或者是显示热点话题,就使用<ListView>,如果是表情,就使用<GridView>:inttype=intent.getIntExtra("type",-1);if(type==2) topic();if(type==3) at();if(type==4) expression();最后运行的效果图如图5-10,5-11:图5-10@好友和添加话题界面截图图5-11添加表情界面截图6系统测试项目测试是目前保证提高产品质量和可靠性的主要手段。测试阶段的目标是尽可能多的发现并排除软件中潜藏的错误,最终把一个高质量的产品交付给用户使用。设计测试用例是测试阶段的关键技术问题,基本目标是选用最少量的高效测试数据,做到尽可能全面、完善地测试,从而最大限度地发现软件中的问题。测试计划、测试方案和测试结果是项目配置的重要成分,他们对系统的维护性影响很大,因此必须仔细记录和保存。系统测试用例流程图如图6-1所示:图6-1测试用例流程图6.1授权模块测试用例测试用例测试结果帐号正确、密码正确成功授权帐号正确、密码错误密码输入有误,请重新输入帐号错误、密码正确该帐号不存在,请重新输入帐号错误、密码错误该帐号不存在,请重新输入6.2发表微博测试用例测试用例测试结果内容为空不能发布空微博内容中包含热点发布成功内容中包含@用户发布成功内容中添加表情发布成功内容中同时包含热点与@用户发布成功内容中添加多个表情发布成功内容中同时包含热点与表情发布成功内容中同时包含@用户与表情发布成功内容中同时包含热点、@用户与表情发布成功6.3浏览微博测试用例测试用例测试结果浏览无图片原创微博浏览成功浏览无图片转发微博浏览成功浏览有图片原创微博浏览成功浏览有图片原创微博浏览成功6.4系统评价本系统整体上来看功能相对比较完善,并且有友好的人机界面,方便用户的操作。但是仍旧存在问题和不足,比如数据处理速度比较慢,处理大量数据的时候需要用户等待。另外,由于技术和时间的限制,有一些较复杂的功能未完成。对于不足的地方,在以后的时间里我将继续弥补和修正。

6总结信息技术的快速发展,将我们每一个都带到了一个被信息包围的信息时代。我们每一个人都无法置身事外,我们在享受着这个时代给我们带来的便利,也在寻找着更加快捷方便的获取信息的方式。微博作为Web2.0时代的鲜明标志,已被人们广泛接受,但它的作用还远远没有发挥出来,需要用创新的意识去完善。在这个知识创新就是财富的时代,创新就能挖掘出藏在其背后的宝藏。一款个性化的微博,将会受到广大用户的喜爱。为解决微博更新效率问题,我仔细研究了现有各大微博的更新机制,选择了更加适合一个中小型微博系统的更新机制,这对于服务器性能的提升产生了积极的作用,给用户以良好的体验。在完成基本功能的基础上,尽量完善微博的性能设计,增加个性化设计。在处理微博现有的看客问题上,为微博增加了话桌功能。话桌功能的话题由用户创造,并且对于每一个用户来说都是平等的,根据话桌话题可以自由讨论,有限的话桌的抢夺,将激发用户参与的积极性。从而进一步挖掘微博的价值,当用户的积极性被调动起来之后,微博的后续平台化发展将得以进行。微博是一个大的平台,它包含了许许多多的功能,可以容纳更多的个性化设计,由于个人技术水平及时间限制,本系统的设计着重在于在实现基本功能的基础上进行个性化创新,并没有照搬现有成功微博的许多功能,很多功能的实现有待进一步的优化,而且本系统的实时更新与话桌功能只在手机客户端加以实现,一则本系统的重点在于基于Android平台的微博系统的设计与实现,二则由于个人精力、技术、时间的限制,没有在Web端加以实现。但本系统的设计可以容纳更多的个性化设计,系统结构较为灵活,有利于后续的开发与发展。只有不断的创新,才能产生无尽的价值。

参考文献[1]MarkoGargenta.LearningAndroid.USA:O’reillyMedia,2011[2]JeffFriesen.LearnJavaforAndro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论