1、移动互联网开发课程设计报告学生姓名: 谌敦斌 学 号: 专 业: 数字媒体技术 班 级: 0312413 设计题目: 安卓新浪微博客户端设计 年学期: 年 秋 季学期 指引教师: 张华 目 录 (示例)一、设计题目1二、设计目1三、设计原理及方案11使用软件工具和环境12需求分析与概要设计13数据库设计(若有)14详细设计和核心问题1四、实现效果1五、设计体会1参 考 文 献3 一、 设计题目简易新浪微博客户端系统二、 设计目通过设计开发新浪微博客户端综合训练安卓系统开发能力,进一步提高对安卓程序开发及运营理解和结识,学会团队协作,开发出界面与功能均有特色安卓应用软件。掌握并熟悉OAuth认证
2、合同工作原理,学会通过httpget或者post方式传参数获取相应服务器应答信息,可以运用新浪微博官方提供一系列接口完毕简易微博客户端开发。三、 设计原理及方案1 使用软件工具和环境Eclipse jdk7.0 Android SDK以及新浪官方提供WeiboSDK、WeiboSDKDemo和相应API2 需求分析与概要设计众所周知,官方新浪微博客户端功能非常完善,咱们这次课程设计重要是模仿官版微博。详细功能需求如下:1. 咱们安卓客户端是在线运营,也就是必要在有网络连接状况下才干工作,如果没有联网将提示顾客打开网络连接。2. 为了安全起见,安卓客户端不建议直接使用顾客名和密码进行登录,而是通
3、过比较流行OAuth认证授权后才干登录使用,因此授权功能是必要。并且在测试阶段,授权顾客必要通过开发者将其微博昵称添加到测试信息才干正常登录。3. 对于第一次授权成功顾客,咱们需要把它某些身份信息例如ID、昵称、头像url和token验证等保存到数据库,以便下一次直接登录。因而要设计一种简易数据库功能。4. 对于已经授权顾客,如果第二次登录,就不需要授权,而是直接进入登陆界面。因而还需要一种微博一键登录功能。5. 登陆顾客能获取到新浪微博首页信息、顾客资料、朋友资料,可以刊登微博、转发微博、点赞微博、评论微博、收藏微博,获取关注信息,粉丝信息,查看自己发微博等等。6. 同样为了安全起见,还需一
4、种注销登录功能。一旦顾客点击注销之后,下一次登录必要先通过授权才干正常登录。系统总体架构设计如图1所示 loading网络连接一键登录授权 我 发现 更多 消息 首页浏览身份信息,查看自己微博、关注以及粉丝列表刊登微博(文字,图片),点评、签到、拍摄浏览微博、转发、评论、点赞等找人、找热门微博,新浪新闻等我、评论、赞列表,写私信等 图1 系统总体架构设计如图1所示,咱们微博客户端一方面进入loading界面,在加载中一方面判断网络与否连接,如果网络是可用,将进入下一步,否则将提示顾客打开网络连接。网络连接成功后系统还将判断顾客与否已经授权,如果已经授权则可以直接通过登录进入主界面。否则将进入授
5、权页面,进入授权页面顾客需要输入新浪微博顾客名和密码并且容许授权后方能进入主页面。进入主页面后顾客可以查看当前顾客及其所关注顾客最新微博,可以转发、评论和点赞。在“消息”页面,顾客可以查看顾客微博、评论和赞等,还可以发送私信。在“更多”页面,顾客可以发送微博,涉及纯文字微博,带图片微博、拍照微博等,还可以点评和签到。在“发现”页面,顾客可以搜索热门微博和找人等等。在“我”页面,顾客可以查看自己身份信息,以及自己发微博、顾客关注和粉丝等等。3 数据库设计在本次微博客户端开发过程中,咱们用到了一点点数据库,就是将授权成功后顾客某些身份信息保存到数据库,以便顾客下次一键登录而不用授权。由于只用到了一
6、种顾客信息表,它ER图如图2所示字符串型UID顾客UID顾客头像url 顾客信息认证token 顾客昵称图2数据库ER图相应数据表userinfomation如表1:表1顾客信息表构造字段名数据类型宽度与否可空阐明idintnot null顾客UIDidstrString20not null字符串型UIDscreen_nameString20not null顾客昵称tokenString40not null授权认证祈求码profile_image_urlString40not null顾客头像网络地址4 在详细设计和核心问题详细设计:1.顾客登录和授权模块功能描述:对于第一次使用该应用顾客,在
7、程序启动之后进入配备页面,输入顾客名和密码进行授权认证。对于顾客在自己手机上使用过或者已经通过了授权认证则可以不用输入顾客名和密码就可以选取顾客进行登录。参加者:未通过授权认证或者未登录。前置条件:未通过授权认证或者未登录顾客。后置条件:通过授权配备或者直接登录系顾客登录和授权模块流程图如图3所示:判断与否存在已授权顾客授权配备开始启动应用登录登录到应用首页结束是否图3 顾客登录和授权流程图2.系统首页信息显示模块功能描述:显示被顾客添加关注朋友最新微博信息。参加者:合法登录顾客。前置条件:已登录顾客。后置条件:在首页显示所有被顾客添加关注最新微博信息列表。该模块用例如下图4所示:顾客查看微博
8、列表搜索顾客刊登新微博图4系统首页信息显示用例图系统首页显示模块流程图如图5所示:加载数据开始进入首页刊登新微博结束显示最新微博列表搜索其她顾客图5显示主界面流程图3.刊登微博模块功能描述:该模块重要实现了顾客刊登微博功能。参加者:合法登录顾客。前置条件:已登录顾客。后置条件:新微博信息与否刊登成功。4.通过核心字搜索有关顾客模块功能描述:该模块重要实现了通过核心字搜索有关顾客功能。参加者:合法登录顾客。前置条件:已登录顾客。后置条件:搜索成功返回成果。搜索功能流程图如下图6所示:开始输入核心词显示与核心字有关微博顾客列表点击某一顾客进入该顾客详细信息页面添加关注或者返回结束 图6搜索功能流程
9、图5.查看微博内容模块:功能描述:该模块实现了顾客可以通过点击某一条微博信息查看该微博所有内容,并进行评论和转发操作。参加者:合法登录顾客。前置条件:已登录顾客。后置条件:可以转发和参加评论。查看微博内容模块用例如下图7所示:查看微博详细信息转发评论顾客图7 查看微博用例图评论微博功能流程图如下图8所示:点击评论按钮进入评论页面开始结束输入评论内容点击发送判断评论失败图8 评论功能流程图转发功能流程图如下图9所示:点击评论按钮进入转发页面开始结束输入转发内容点击发送判断转发失败图9转发功能流程图6.查看顾客信息模块功能描述:查看朋友详细信息。 参加者:合法登录顾客。 前置条件:已登录顾客。 后
10、置条件:查看朋友详细信息(涉及所有微博,话题,关注,粉丝)关注和取消关注操作。查看顾客信息模块用例如下图10所示:添加对朋友粉丝关注对朋友进行关注和取消关注添加对朋友所关注顾客关注查看朋友详细信息查看朋友关注列表顾客查看朋友所有微博信息查看朋友所有话题查看朋友粉丝列表图10 查看顾客信息用例图查看关注和添加关注功能详细流程图如下图11所示:点击进入关注列表开始结束查看顾客信息添加关注图11查看关注和添加关注流程图查看顾客所有微博列表功能流程如下图12所示:结束点击微博按钮 开始顾客所有微博列表界面查看某一条微博详细信息同步进行评论和转发操作图12 查看顾客所有微博列表流程图遇到核心问题:1.
11、OAuth认证,如何获取授权?这也是咱们这个微博客户端开发过程中一种难点,就是怎么样与新浪微博官方服务器交流并得到相应响应信息。刚开始想了好久,也跟着一种视频教程一步一步做,可日后发现,新浪微博某些东西涉及接口等是随着时间不断在更新,咱们要做这个客户端,必要去理解官网上相应API文档,依照详细接口详细设计。一方面咱们需要到新浪微博官网去注册咱们要开发APP,填写有关信息。注册网址是,固然新浪微博提供应开发者一种非常好平台,像网站接入、站内应用、无线游戏等等,由于咱们开发是安卓客户端,因而选取微连接里面移动应用。在填写APP基本信息时有个包名和签名比较重要,包名必要与源程序包名一致,并且签名必要
12、是在安装了微博签名器安卓平台上输入包名后得到签名,包名与签名错误将会导致应用不可以用。此外,在高档信息里回调页地址也比较重要,它是一种http地址,形式可以任意,但必要与源代码里面回调地址同样。注册了APP后,会生成一种APP Key,这个APP Key非常重要,咱们祈求授权时所需要参数就包括它。通过阅读微博开发API文档,咱们发现,不论是读接口还是写接口,咱们都需要传相应参数给服务器。然后服务器会返回某些信息给咱们,也许是字符串,也也许是json文本,有时候咱们还需要对它进行解析。祈求授权话,咱们是要通过oauth2接口authorize函数获取授权,需要参数是APP_KEY、REDIREC
13、T_URL和SCOPE。SCOPE是权限参数,通过它才可以使用平台许多核心微博功能。这个函数将会返回授权后授权后access token,这个access token 可以说是咱们实现背面功能一把金钥匙,有它咱们才干读接口和写接口。核心代码如图13mWeiboAuth = new WeiboAuth(this,Constants.APP_KEY,Constants.REDIRECT_URL,Constants.SCOPE);mWeiboAuth.anthorize(new AuthListener(); 图13授权核心代码2.获取并显示顾客信息,涉及昵称、头像、性别、所在地、个人描述、微博数、
14、关注数、粉丝数等等。这是咱们导航栏“我”中内容,其实这样多信息呢,都是通过咱们向UserAPI中show函数传递祈求参数,服务器返回给咱们json文本,然后咱们通过解析json,获得相应属性值。通过最初授权咱们获得了access token,通过它咱们可以生成UserAPI接口对象,然后咱们才干调用相应show函数,show函数涉及两个参数,第一种是uid值,可以通过access token得到,另一种是异步回调监听,咱们接受服务器返回信息就是在回调函数里面进行。祈求顾客信息核心代码如图14图14祈求顾客信息 咱们需要声明一种回调监听变量,也就是图14中m1Listener,它是Request
15、Listener实例,定义时会重载一种onComplete函数,在这个函数里面。咱们可以将获取json窜解析成相应对象,然后将这些对象相应属性通过UserInfo类get和set办法赋值给静态变量,以便咱们在其她类运用这些数据。核心代码如图15图15接受并保存顾客信息3.加载顾客头像这是一种难点,咱们获取到顾客头像其实是一种字符串地址,即url,咱们要通过这个url来加载这个网络图片。其实就是运用handler和SoftReference,依照url获得一种输入流,然后从这个输入流中创立drawable。固然咱们也可以通过BitmapFactory来得到相应位图。核心代码如图16图16依照ur
16、l加载网络图片4.获取微博列表其实这个跟咱们获取顾客信息同样,都是传几种参数过去,然后获得响应json串,再解析缓存数据。只是用到接口和函数不同样了,咱们这里简介获取首页登录顾客及其关注顾客最新微博。依照官网API,咱们可以懂得这里要用是StatusesAPI里面friendsTimeline函数。这个函数需要8个参数,听起来比较多,事实上诸多用默认就可以了。核心代码如图17图17获取首页微博列表核心代码普通咱们只需要注意friendsTimeline第三个参数,表达一次祈求获取多少条微博,普通20就足够了,太大了一是加载很慢,二是也许会导致卡死。同样是异步回调,同样需要解析json,同样是用
17、pojo通过set和get办法保存和传递参数,但要注意,这时是涉及到多条微博数据信息,要用数组来保存。然后咱们在listview适配器中将相应数据传给相应控件,这样就能显示咱们微博列表了。其她像显示我朋友列表、关注列表、粉丝列表等与此类似,只是接口和函数以及相应参数有些差别罢了,这里就不再一一赘述。5.发微博前面显示微博列表及顾客信息都是通过读接口实现,而发一条微博则是通过写接口实现。固然咱们这里用到还是StatusesAPI接口,发微博函数是update。这个函数需要四个参数,第一种就是咱们文本内容,第二个和第三个是字符串经纬度不需要管,都用默认就可以了,第四个参数依然是咱们异步回调。在异步
18、回调函数里咱们要做就是给出一种响应,看微博与否发成功了,尚有就是跳转到首页微博列表,这时咱们就会看到咱们发布微博。核心代码如图18图18发微博核心代码 微博中其她功能实现与此都相类似,只是接口和函数也许不相似,都是接口函数传参数祈求,然后在异步回调函数里接受解析数据或者做其她操作,这里不再一一赘述。此外,新浪微博官方提供接口函数成千上万,由于时间因素,诸多功能咱们都还没有实现,在本次课程设计结束之后,咱们将继续咱们微博开发。四、 实现效果 图19 loading界面图片alpha由小变大,亮度由暗变亮,给人一种豁然开朗感觉。 图20一键登录界面只有已经授权顾客才干进入到此页面,通过登录可以进入
19、到微博主界面 图21授权界面顾客第一次使用必要通过授权,并且在测试阶段并不是随便一种新浪微博账号都可以被授权,而是其昵称被开发者添加到测试信息里顾客才干被授权,顾客输入对的顾客名、密码和验证码后将直接进入到微博主界面。 图22 微博主界面5大分界面5大分界面涉及首页、消息、更多、发现和我。“首页”重要是显示顾客及其关注顾客微博列表。“消息”里面可以发私信,查看我、评论、赞等列表。“更多”,可以发文字微博、图片微博,签到等等。发现里面可以找人和搜索热门微博。“我”里面重要是登录顾客身份信息,可以查看自己发微博,可以查看关注列表和粉丝,如图23 图23查看“我”资料信息和发微博图24 我微博顾客可
20、以在消息里查看我微博,与首页微博形式差不多。 图25发微博在“更多”里面咱们可以发送微博,微博写好后点击确认后,如果发送成功会有相应提示,并跳转到首页查看。图26 注销登录在主界面如果顾客点击菜单按钮,将会浮现注销菜单,如果点击顾客在这个客户端所有信息将会被清空,顾客如需再次登录必要重新授权。五、 设计体会对于本次安卓课程设计,可以说是一次非常锻炼人开发实战。接触安卓开发没多久咱们在一种比较综合项目面前还是有些胆怯和紧张。但逐渐只要你敢于去尝试,去摸索,每天均有每天收获,也许一种问题你一天解决不了,多花一点时间或许就会解决了。由于时间仓促,新浪微博接口功能众多,咱们并没有达到预期成果,尚有诸多
21、功能需要咱们后续继续去开发。我以为我在这个过程中最大收获就是一定要专心思考,不论是界面还是功能,一定要去想它究竟是怎么样实现,此外就是注意代码模块化、构造化,多实当代码复用,千万不能写成“一口井”和“大锅饭”,还要就是要养成写注释好习惯,如果代码多了,函数多了,变量多了,就搞不清详细相应意义了。给函数及其参数写注释,给变量写注释能更好协助进行团队开发和后续开发。我相信每一种先进程序员均有这样一种好习惯吧。通过本系统开发,使我对课本上知识点和理论有了更深一层理解,也使我学会了如何运用所学知识,把理论结合于实践中,进一步掌握了管理信息系统开发规律,从而对本专业有了更深刻结识。此后,我会加倍努力去研
22、究,在纯熟基本上掌握更多新型技术,来提高自己开发水平。六、 后记咱们这次新浪微博客户端开发由马露负责界面,董建负责算法,谌敦斌负责详细功能代码实现。虽然实现了某些新浪微博功能,由于时间仓促,加之咱们能力有限,尚有诸多微博功能还没有来得及实现。咱们将在本次课程设计之后继续咱们微博开发,尽量开发出一种比较完善微博客户端。在写作课程设计报告时,咱们小组每个同窗除了核心问题和设计体会不同样外,其他某些都是一致,由于这自身就是一种整体,不可胡乱分割,还请教师见谅。参 考 文 献1杨丰盛.Android应用开发揭秘M.北京:机械工业出版社,49508. 2王世江,佘志龙,陈昱勋,郑明杰.Google An
23、droid SDK 开发范例大全(第三版)M.北京:人民邮电出版社,170189. 3李刚.疯狂Android讲义M.北京:电子工业出版社,20212. 4伯内特.Android基本教程(第二版)M.北京:人民邮电出版社,98145.5杨丰盛.Android技术内幕:系统卷(第一版)M.北京:机械工业出版社,309402.6韩超,梁泉.Android系统级进一步开发:移植与调试M.北京:电子工业出版社,,234 327.7埃克尔.Java编程思想(第四版)M.北京:机械工业出版社,560698.8布洛克.Effective Java中文版(第二版)M.北京:机械工业出版社,120167.9昊斯特曼.JAVA核心技术(卷1):基本知识(原书第八版)M.北京:机械工业出版社,57117. 10 李刚.疯狂Java讲义M.北京:电子工业出版社,99112.