新浪微博安卓客户端课程设计报告.docx
- 文档编号:12871821
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:34
- 大小:1.27MB
新浪微博安卓客户端课程设计报告.docx
《新浪微博安卓客户端课程设计报告.docx》由会员分享,可在线阅读,更多相关《新浪微博安卓客户端课程设计报告.docx(34页珍藏版)》请在冰点文库上搜索。
新浪微博安卓客户端课程设计报告
移动互联网开发
课程设计报告
学生:
谌敦斌学号:
031241318
专业:
数字媒体技术班级:
0312413
设计题目:
安卓新浪微博客户端设计
学年学期:
2014年秋季学期
指导教师:
华
目录(示例)
一、设计题目1
二、设计目的1
三、设计原理及方案1
1使用的软件工具和环境1
2需求分析与概要设计1
3数据库设计(若有)1
4详细设计和关键问题1
四、实现效果1
五、设计体会1
参考文献3
一、设计题目
简易新浪微博客户端系统
二、设计目的
通过设计开发新浪微博客户端综合训练安卓系统开发能力,进一步提升对安卓程序开发及运行的理解和认识,学会团队协作,开发出界面与功能都有特色的安卓应用软件。
掌握并熟悉OAuth认证协议的工作原理,学会通过http的get或者post方式传参数获取相应的服务器应答信息,能够利用新浪微博官方提供的一系列接口完成简易微博客户端的开发。
三、设计原理及方案
1使用的软件工具和环境
Eclipsejdk7.0AndroidSDK以及新浪官方提供的WeiboSDK、WeiboSDKDemo和相应API
2需求分析与概要设计
众所周知,官方新浪微博客户端的功能非常完善,我们这次课程设计主要是模仿官版的微博。
具体的功能需求如下:
1.我们的安卓客户端是在线运行的,也就是必须在有网络连接的情况下才能工作,如果没有联网将提醒用户打开网络连接。
2.为了安全起见,安卓客户端不建议直接使用用户名和密码进行登录,而是通过比较流行的OAuth认证授权后才能登录使用,所以授权功能是必须的。
并且在测试阶段,授权的用户必须经过开发者将其微博昵称添加到测试信息才能正常登录。
3.对于第一次授权成功的用户,我们需要把它的部分身份信息例如ID、昵称、头像url和token验证等保存到数据库,方便下一次直接登录。
因此要设计一个简易的数据库功能。
4.对于已经授权的用户,如果第二次登录,就不需要授权,而是直接进入登陆界面。
因此还需要一个微博一键登录功能。
5.登陆的用户能获取到新浪微博首页的信息、用户资料、好友资料,能够发表微博、转发微博、点赞微博、评论微博、收藏微博,获取关注信息,粉丝信息,查看自己发的微博等等。
6.同样为了安全起见,还需一个注销登录功能。
一旦用户点击注销之后,下一次登录必须先经过授权才能正常登录。
系统的总体架构设计如图1所示
图1系统总体架构设计
如图1所示,我们的微博客户端首先进入loading界面,在加载中首先判断网络是否连接,如果网络是可用的,将进入下一步,否则将提醒用户打开网络连接。
网络连接成功后系统还将判断用户是否已经授权,如果已经授权则可以直接通过登录进入主界面。
否则将进入授权页面,进入授权页面的用户需要输入新浪微博用户名和密码并且允许授权后方能进入主页面。
进入主页面后用户可以查看当前用户及其所关注用户的最新微博,可以转发、评论和点赞。
在“消息”页面,用户可以查看用户的微博、评论和赞等,还可以发送私信。
在“更多”页面,用户可以发送微博,包括纯文字微博,带图片的微博、拍照微博等,还可以点评和签到。
在“发现”页面,用户可以搜索热门微博和找人等等。
在“我”页面,用户可以查看自己的身份信息,以及自己发的微博、用户的关注和粉丝等等。
3数据库设计
在此次微博客户端开发过程中,我们用到了一点点数据库,就是将授权成功后的用户部分身份信息保存到数据库,方便用户下次一键登录而不用授权。
由于只用到了一个用户信息表,它的ER图如图2所示
图2数据库ER图
对应的数据表userinfomation如表1:
表1用户信息表结构
字段名
数据类型
宽度
是否可空
说明
id
int
notnull
用户UID
idstr
String
20
notnull
字符串型的UID
screen_name
String
20
notnull
用户昵称
token
String
40
notnull
授权认证请求码
profile_image_url
String
40
notnull
用户头像网络地址
4在详细设计和关键问题
详细设计:
1.用户登录和授权模块
功能描述:
对于第一次使用该应用的用户,在程序启动之后进入配置页面,输入用户名和密码进行授权认证。
对于用户在自己的手机上使用过或者已经通过了授权认证则可以不用输入用户名和密码就可以选择用户进行登录。
参与者:
未通过授权认证或者未登录。
前置条件:
未通过授权认证或者未登录的用户。
后置条件:
通过授权配置或者直接登录系
用户登录和授权模块流程图如图3所示:
图3用户登录和授权流程图
2.系统首页信息显示模块
功能描述:
显示被用户添加关注的好友的最新微博信息。
参与者:
合法登录用户。
前置条件:
已登录用户。
后置条件:
在首页显示所有被用户添加关注的最新微博信息列表。
该模块用例如下图4所示:
图4 系统首页信息显示用例图
系统首页显示模块流程图如图5所示:
图5显示主界面流程图
3.发表微博模块
功能描述:
该模块主要实现了用户发表微博的功能。
参与者:
合法登录用户。
前置条件:
已登录用户。
后置条件:
新微博信息是否发表成功。
4.通过关键字搜索相关用户模块
功能描述:
该模块主要实现了通过关键字搜索相关用户的功能。
参与者:
合法登录用户。
前置条件:
已登录用户。
后置条件:
搜索成功返回结果。
搜索功能流程图如下图6所示:
图6搜索功能流程图
5.查看微博容模块:
功能描述:
该模块实现了用户可以通过点击某一条微博信息查看该微博的所有容,并进行评论和转发操作。
参与者:
合法登录用户。
前置条件:
已登录用户。
后置条件:
可以转发和参与评论。
查看微博容模块用例如下图7所示:
图7查看微博用例图
评论微博功能流程图如下图8所示:
图8评论功能流程图
转发功能流程图如下图9所示:
图9转发功能流程图
6.查看用户信息模块
功能描述:
查看好友的详细信息。
参与者:
合法登录用户。
前置条件:
已登录用户。
后置条件:
查看好友详细信息(包括所有微博,话题,关注,粉丝)关注和取消关注操作。
查看用户信息模块用例如下图10所示:
添加对好友粉丝的关注
图10查看用户信息用例图
查看关注和添加关注功能具体流程图如下图11所示:
图11查看关注和添加关注流程图
查看用户所有微博列表功能流程如下图12所示:
图12查看用户所有微博列表流程图
遇到的关键问题:
1.OAuth认证,如何获取授权?
这也是我们这个微博客户端开发过程中的一个难点,就是怎么样与新浪微博的官方服务器交流并得到相应的响应信息。
刚开始想了很久,也跟着一个视频教程一步一步做,可后来发现,新浪微博的一些东西包括接口等是随着时间不断在更新的,我们要做这个客户端,必须去了解官网上相应的API文档,根据具体的接口具体设计。
首先我们需要到新浪微博官网去注册我们要开发的APP,填写相关的信息。
注册网址是open.weibo./apps/new?
sort=mobile,当然新浪微博提供给开发者一个非常好的平台,像接入、站应用、无线游戏等等,由于我们开发的是安卓客户端,因此选择微连接里面的移动应用。
在填写APP基本信息时有个包名和签名比较重要,包名必须与源程序的包名一致,并且签名必须是在安装了微博签名器的安卓平台上输入包名后得到的签名,包名与签名错误将会导致应用不可以用。
另外,在高级信息里的回调页地址也比较重要,它是一个http地址,形式可以任意,但必须与源代码里面的回调地址一样。
注册了APP后,会生成一个APPKey,这个APPKey非常重要,我们请求授权时所需要的参数就包含它。
通过阅读微博开发的API文档,我们发现,不管是读接口还是写接口,我们都需要传相应的参数给服务器。
然后服务器会返回一些信息给我们,可能是字符串,也可能是json文本,有时候我们还需要对它进行解析。
请求授权的话,我们是要通过oauth2接口的authorize函数获取授权,需要的参数是APP_KEY、REDIRECT_URL和SCOPE。
SCOPE是权限参数,通过它才可以使用平台的许多核心微博功能。
这个函数将会返回授权后的授权后的accesstoken,这个accesstoken可以说是我们实现后面功能的一把金钥匙,有它我们才能读接口和写接口。
关键代码如图13
mWeiboAuth=newWeiboAuth(this,Constants.APP_KEY,Constants.REDIRECT_URL,Constants.SCOPE);
mWeiboAuth.anthorize(newAuthListener());
图13授权关键代码
2.获取并显示用户的信息,包括昵称、头像、性别、所在地、个人描述、微博数、关注数、粉丝数等等。
这是我们导航栏“我”中的容,其实这么多信息呢,都是通过我们向UserAPI中的show函数传递请求参数,服务器返回给我们的json文本,然后我们通过解析json,获得相应的属性值。
通过最初的授权我们获得了accesstoken,通过它我们可以生成UserAPI接口对象,然后我们才能调用对应的show函数,show函数包括两个参数,第一个是uid值,可以通过accesstoken得到,另一个是异步回调监听,我们接收服务器返回的信息就是在回调函数里面进行的。
请求用户信息的关键代码如图14
图14请求用户信息
我们需要声明一个回调监听变量,也就是图14中的m1Listener,它是RequestListener的实例,定义时会重载一个onComplete函数,在这个函数里面。
我们可以将获取的json窜解析成相应的对象,然后将这些对象的相应属性通过UserInfo类的get和set方法赋值给静态变量,方便我们在其他类运用这些数据。
关键代码如图15
图15接收并保存用户信息
3.加载用户头像
这是一个难点,我们获取到的用户头像其实是一个字符串地址,即url,我们要通过这个url来加载这个网络图片。
其实就是利用handler和SoftReference
当然我们也可以通过BitmapFactory来得到相应的位图。
关键代码如图16
图16根据url加载网络图片
4.获取微博列表
其实这个跟我们获取用户信息一样,都是传几个参数过去,然后获得响应的json串,再解析缓存数据。
只是用到的接口和函数不一样了,我们这里介绍获取首页登录用户及其关注用户的最新微博。
根据官网API,我们可以知道这里要用的是StatusesAPI里面的friendsTimeline函数。
这个函数需要8个参数,听起来比较多,实际上很多用默认的就可以了。
关键代码如图17
图17获取首页微博列表关键代码
一般我们只需要注意friendsTimeline的第三个参数,表示一次请求获取多少条微博,一般20就足够了,太大了一是加载很慢,二是可能会造成卡死。
同样是异步回调,同样需要解析json,同样是用pojo通过set和get方法保存和传递参数,但要注意,这时是涉及到多条微博的数据信息,要用数组来保存。
然后我们在listview的适配器中将相应的数据传给对应的控件,这样就能显示我们的微博列表了。
其他的像显示我的好友列表、关注列表、粉丝列表等与此类似,只是接口和函数以及相应参数有些差别罢了,这里就不再一一赘述。
5.发微博
前面的显示微博列表及用户信息都是通过读接口实现的,而发一条微博则是通过写接口实现的。
当然我们这里用到的还是StatusesAPI接口,发微博的函数是update。
这个函数需要四个参数,第一个就是我们的文本容,第二个和第三个是字符串的经纬度不需要管,都用默认的就可以了,第四个参数仍然是我们的异步回调。
在异步回调函数里我们要做的就是给出一个响应,看微博是否发成功了,还有就是跳转到首页的微博列表,这时我们就会看到我们发布的微博。
关键代码如图18
图18发微博关键代码
微博中其他功能实现与此都相类似,只是接口和函数可能不相同,都是接口函数传参数请求,然后在异步回调函数里接收解析数据或者做其他操作,这里不再一一赘述。
另外,新浪微博官方提供的接口函数成千上万,由于时间原因,很多功能我们都还没有实现,在本次课程设计结束之后,我们将继续我们的微博开发。
四、实现效果
图19loading界面
图片的alpha由小变大,亮度由暗变亮,给人一种豁然开朗的感觉。
图20一键登录界面
只有已经授权的用户才能进入到此页面,通过登录可以进入到微博主界面
图21授权界面
用户第一次使用必须经过授权,而且在测试阶段并不是随便一个新浪微博账号都可以被授权,而是其昵称被开发者添加到测试信息里的用户才能被授权,用户输入正确的用户名、密码和验证码后将直接进入到微博主界面。
图22微博主界面的5大分界面
5大分界面包括首页、消息、更多、发现和我。
“首页”主要是显示用户及其关注用户的微博列表。
“消息”里面可以发私信,查看我的、评论、赞等列表。
“更多”,可以发文字微博、图片微博,签到等等。
发现里面可以找人和搜索热门微博。
“我”里面主要是登录用户的身份信息,可以查看自己发的微博,可以查看关注列表和粉丝,如图23
图23查看“我”的资料信息和发的微博
图24我的微博
用户可以在消息里查看我的微博,与首页微博的形式差不多。
图25发微博
在“更多”里面我们可以发送微博,微博写好后点击确认后,如果发送成功会有相应提示,并跳转到首页查看。
图26注销登录
在主界面如果用户点击菜单按钮,将会出现注销菜单,如果点击用户在这个客户端的所有信息将会被清空,用户如需再次登录必须重新授权。
五、设计体会
对于此次安卓课程设计,可以说是一次非常锻炼人的开发实战。
接触安卓开发没多久的我们在一个比较综合的项目面前还是有些胆怯和紧。
但逐渐的只要你敢于去尝试,去探索,每天都有每天的收获,也许一个问题你一天解决不了,多花一点时间或许就会解决了。
由于时间仓促,新浪微博的接口功能众多,我们并没有达到预期的结果,还有很多功能需要我们后续继续去开发。
我认为我在这个过程中最大的收获就是一定要用心思考,不管是界面还是功能,一定要去想它究竟是怎么样实现的,另外就是注意代码的模块化、结构化,多实现代码复用,千万不能写成“一口井”和“大锅饭”,还要就是要养成写注释的好习惯,如果代码多了,函数多了,变量多了,就搞不清具体相应的意义了。
给函数及其参数写注释,给变量写注释能更好的帮助进行团队开发和后续开发。
我相信每一个优秀的程序员都有这样的一个好习惯吧。
通过本系统的开发,使我对书本上的知识点和理论有了更深一层的了解,也使我学会了如何利用所学的知识,把理论结合于实践中,进一步掌握了管理信息系统开发的规律,从而对本专业有了更深刻的认识。
此后,我会加倍努力的去研究,在熟练的基础上掌握更多的新型技术,来提高自己的开发水平。
6、后记
我们这次新浪微博客户端的开发由马露负责界面,董建负责算法,谌敦斌负责具体功能代码实现。
虽然实现了部分新浪微博功能,由于时间仓促,加之我们能力有限,还有很多微博功能还没有来得及实现。
我们将在本次课程设计之后继续我们的微博开发,尽量开发出一个比较完善的微博客户端。
在写作课程设计报告时,我们小组每个同学除了关键问题和设计体会不一样外,其它部分都是一致的,因为这本身就是一个整体,不可胡乱分割的,还请老师见谅。
参考文献
[1]丰盛.Android应用开发揭秘[M].:
机械工业,2010,49~508.
[2]王世江,佘志龙,昱勋,明杰.GoogleAndroidSDK开发例大全(第三版)[M].:
人民邮电,2011,170~189.
[3]刚.疯狂Android讲义[M].:
电子工业,2011,20~212.
[4]伯特.Android基础教程(第二版)[M].:
人民邮电,2011,98~145.
[5]丰盛.Android技术幕:
系统卷(第一版)[M].:
机械工业,2011,309~402.
[6]超,梁泉.Android系统级深入开发:
移植与调试[M].:
电子工业,2011,234~327.
[7]埃克尔.Java编程思想(第四版)[M].:
机械工业,2007,560~698.
[8]布洛克.EffectiveJava中文版(第二版)[M].:
机械工业,2009,120~167.
[9]昊斯特曼.JAVA核心技术(卷1):
基础知识(原书第八版)[M].:
机械工业,2008,57~117.
[10]刚.疯狂Java讲义[M].:
电子工业,2012,99~112.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新浪 微博安卓 客户端 课程设计 报告