《新浪微博客户端的设计与实现.doc》由会员分享,可在线阅读,更多相关《新浪微博客户端的设计与实现.doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、新浪微博客户端的设计与实现学 院计算机学院专 业计算机科学与技术(嵌入式系统方向)班 级04010105学 号2010040101170姓 名高志伟指导教师曹一鹏负责教师沈阳航空航天大学2014年6月摘 要作为市场占有率第一的新浪微博客户端拥有着广泛的需求。目前一些新浪微博客户端相对比较完善,功能也比较齐全,但基于市场利益考虑,有着不同程度涉及广告的行为,而且界面设计的相对传统,引起很多用户不满。因此,本课题就致力于开发出一款基于Android平台的满足用户使用需求的新浪微博客户端。为了实现新浪微博客户端,需要申请开发者账号,并且下载新浪微博Android SDK。新浪微博Android SD
2、K为第三方微博应用提供了微博API调用服务,使第三方微博客户端无需了解复杂的验证和API调用过程,就可以实现分享文字或者多媒体信息到新浪微博。本文阐述了新浪微博客户端的各种相关知识,同时将设计过程中所用到的主要方法及控件进行了详细说明。本应用实现了发表微博、评论微博、转发微博、我的资料、我的关注、我的粉丝、收藏评论等功能,具有较强的实用性;将服务接入微博平台,有助于推广产品,增加应用的流量、拓展新用户,甚至获得收益。关键词:Android平台;新浪微博Android SDK;微博API调用服务Sina Micro blogging Client Design and Implementatio
3、nAbstractAs the market share of the first Sina micro blogging client has a wide range of needs. At present, some Sina micro blogging client base is relatively sound, function relatively complete, but based on market interest, with varying degrees of behavior involved in advertising, and the interfac
4、e is relatively conventional design, attracted a lot of user dissatisfaction. Thus, the subject is committed to develop a platform based on Android to meet user needs Sina micro blogging client.To achieve Sina micro blogging client, application developers need to account, and download Weibo Android
5、SDK. Sina Weibo Android SDK third-party applications to provide API calls micro blogging service, enabling third-party Twitter clients do not need to understand the complex process of verification and API calls, you can achieve shared text or multimedia message to Sina micro blogging.This paper desc
6、ribes a variety of related knowledge Sina micro blogging client, while the major methods and controls used in the design process is described in detail. This application implements published micro blogging comment micro blogging, micro blogging forwarded my information, my attention, my fans, collec
7、tors comments and other features, has a strong practicality. The micro blogging service access platform, helps to promote their products, increase traffic applications, develop new users, and even gain.Keywords: Android; Sina Weibo Android SDK; Micro blogging API services calls;目 录1 绪论11.1 课题背景11.2
8、微博发展简介11.3 Android简介31.4 OAuth2.0概述41.5 开发平台介绍41.6 开发工具eclipse简介41.7 开发语言和开发环境51.8 课题目标、内容、意义51.9 论文结构52 系统分析72.1 可行性分析72.1.1 市场的可行性72.1.2 经济的可行性72.1.3 技术的可行性72.1.4 运行的可行性72.2 需求分析82.2.1 对功能的规定82.2.2 对性能的规定102.2.3 对可维护性的规定102.2.4 对个性的规定102.3 系统规划概述103 系统设计123.1 系统总体框架123.2 功能模块设计134 详细设计与编码144.1 授权功
9、能模块144.1.1 应用启动与授权144.2 微博首页模块154.3 用户信息模块184.4 发送微博模块184.4.1 基本功能184.4.2 文本输入194.4.3 选择图片上传194.5 微博详情模块204.5.1 评论微博204.5.2 转发微博214.6 微博评论模块214.7 更多设置模块225 系统测试235.1 测试目标235.2 测试流程和结果235.2.1 授权登录235.2.2 微博首页、个人信息等显示245.2.3 微博详情页面显示255.2.4 发送微博255.2.5 更多设置265.3 系统评价27参考文献28致 谢291 绪论1.1 课题背景一个新的时代的诞生意
10、味着新的理念的产生,而新的理念催生出新的潮流,新的潮流又会给现有的社会带来变革,创新是社会发展的强大动力,能为IT业带来新的活力。摩尔定律的成功运用给IT行业带来的冲击令人措手不及,作为终端设备之中数量级比较大的手机,近年来发展迅速,在改变传统手机形式的同时,不断地创新以创造出更大的市场价值,这也使它成为许多厂商的青睐。IOS在乔布斯的创新理念下的发展势如破竹,Android则另辟蹊径凭着开源的优势占得一席之地,Symbian和Black berry的传统模式被不断侵蚀,Windows Phone的发展举步维艰。手机终端应用种类的不断增加,使其能够实现在PC端的功能时,也深深地改变着PC端的发
11、展。互联网行业,以Facebook为代表的SNS的突然崛起更是为网络的发展带来不小的冲击,而在国内,新浪推陈出新,迎合大众口味,利用网络等多种宣传方式使新浪微博在市场取得先机,被广大网民所推崇,新浪微博的受众较多,有各界名人,政府机构,企业,媒体等,微博的开通使老百姓生活更加丰富多彩,除此之外政府机构开通微博能够使老百姓以更快的速度了解政府决策,以及更方便地参政议政。于是,新浪微博的手机客户端适时出现,新浪微博搭载在使用者众多的Android平台下更有利于它的下载量的增长。由于Android系统的使用者较多,所以它的微博客户端功能比较齐全也更完善,但是为了能够更快地收回成本,所以肯定会有一些广
12、告出现,且界面设计中规中矩不够有新意,这些原因可能会导致一些用户的流失。因此,本课题就应运而生,它致力于开发出一款基于Android平台的新浪微博客户端,使新浪微博客户端更加完善,以增加用户的满意度。1.2 微博发展简介从2007年中国第一家带有微博色彩的饭否网开张,到2009年,微博这个全新的名词,新浪微博以摧枯拉朽的姿态扫荡世界,打败奥巴马、甲流等等名词,成为全世界最流行的词汇。 伴随而来的,是一场微博世界人气的争夺战,大批量的名人被各大网站招揽,各路名人也以微博为平台,在网络世界里聚集人气,同样,新的传播工具也造就了无数的草根英雄,从默默无闻到新的话语传播者,往往只在一夜之间、寥寥数语。
13、2009年7月中旬开始,国内大批老牌微博产品(饭否、腾讯滔滔等)停止运营,一些新产品开始进入人们的视野,像开放的叽歪,6月份开放的Follow5,7月份开放的9911,8月份开放的新浪微博,其中Follow5在2009年7月19日孙楠大连演唱会上的亮相, 是国内第一次将微博引入大型演艺活动,与Twitter当年的发展颇有几分神似。2010年国内微博迎来春天,微博像雨后春笋般崛起,四大门户网站均开设微博。根据相关公开数据,截至2010年1月份,该产品在全球已经拥有7500万注册用户。中国互联网络信息中心(CNNIC)于2011年7月19日发布第28次中国互联网络发展状况统计报告,报告显示,201
14、1年上半年,中国微博用户从6331万增至1.95亿,增长约2倍。该报告指出,中国互联网的普及率增至36.2%,较2010年增加1.9%。2011年上半年,我国微博用户数量从6331万增至1.95亿,半年增幅高达208.9%。微博在网民中的普及率从13.8%增至40.2%。从2010年底至今,手机微博在网民中的使用率比例从15.5%上升到34%。2012年1月,据中国互联网络信息中心(CNNIC)报告显示,截至2011年12月底,我国微博用户数达到2.5亿,较上一年底增长了296.0%,网民使用率为48.7%。微博用一年时间发展成为近一半中国网民使用的重要互联网应用。据统计2012年6月我国微博
15、用户已达到3亿之多。2012年,中国社科文献出版社在北京发布的新媒体蓝皮书:中国新媒体发展报告(2012)指出,作为一种新型媒介工具,微博传播对于社会发展有着明显的积极作用,但其负面效应也很显著。而中国微博发展快,用户增长迅速,自然容易滋生一些新的问题。新媒体蓝皮书还指出,中国政府积极开启微博,开启了中国新媒体政治和社会治理新时代。2013年1月15日,中国互联网络信息中心(CNNIC)在北京发布第31次中国互联网络发展状况统计报告。报告显示,截至2012年12月底,我国网民规模达5.64亿,互联网普及率为42.1%。其中微博用户规模在2012年达到3.09亿,较2011年底增长了5873万。
16、微博急速扩张的阶段已经结束,但年增幅仍能达到23.5%。相当一部分用户访问和发送微博的行为发生在手机终端上,截至2012年底手机微博用户规模达到2.02亿,即高达65.6%的微博用户使用手机终端访问微博。至今,新浪微博用户数已超过5亿,得益于抢占了先机,而且在整体的战略执行上也比较彻底到位,所以获得了地位。仅仅两年时间,新浪微博就为新浪生下了一个价值几十亿美金的金蛋。 而另一个微博巨头腾讯微博,也呈现出发展迅猛的姿态, 腾讯拥有近7.5亿的QQ注册用户,3亿左右的活跃用户。这部分人群很容易受潮流趋势的影响,开通腾讯微博。通过腾讯微博能够与QQ好友和腾讯微博上的其他用户进行信息的分享。另外其作为
17、重要的推广渠道。企业用户通过注册腾讯官方微博,得到认证后,能够迅速的扩大企业的知名度以及提高企业核心竞争力。个人用户通过腾讯微博,也能在微博平台进行个人的推广.很多的社会事件揭露都来自于微博平台。同时“高校教育平台”也随之建立,如腾讯微博校园频道上的高校新闻哥微博体系的发展,推动了中国教育事业信息化发展的步伐。1.3 Android简介随着2012年移动互联网时代的全面到来,手机操作系统越来越被我们每一个人所认识。各种操作系统的手机随处可见,在这些操作系统中。Android越来越引起人们的关注和追捧。Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。2005年由Go
18、ogle收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。到2012年2月份,Android在智能移动设备的市场份额占到15%,每天的Android手机的激活量达到85万部。目前国内外都越来越重视Android系统,如把PC上的常用软件移植到Android系统的供手机用户使用,使得产品在移动互联网上占有更大的市场,增加额外的收入等。目前Android手机平台的应用数量达到450000之多。因此,基于Android手机客户端的微博开发,也是现代互联网时代下催生的人们生活中不可或缺的一个产物。 3G互联网时代下,移动应用越来越多,Android 4.0.3版本已经发布,未来采用
19、Android系统手机越来越多。不仅仅在于手机,在任何移动设备上,都可以采用Android开发移植到终端设备上,例如电视、冰箱、空调、洗衣机等。将这些设备计入互联网,我们可以通过手机实时知道各个设备的状态,也可以控制它们工作。总之,Android 将带给我们更加智能、便捷、现代的生活。从而,Android应用的开发,将会越来越庞大,需求将会越来越丰富。开发微博手机客户端和其他应用将会越来越普遍,Android将会越来越壮大。1.4 OAuth2.0概述大部分API的访问如发表微博、获取私信,关注都需要用户身份,目前微博开放平台用户身份鉴权有OAuth2.0和Basic Auth(仅用于应用所属
20、开发者调试接口),新版接口也仅支持这两种方式。OAuth2.0较1.0相比整个授权验证流程更简单更安全,也是未来最主要的用户身份验证和授权方式。关于OAuth2.0协议授权流程查看OAuth2.0授权流程 ,其中Client指第三方应用,Resource Owner指用户,Authorization Server是我们的授权服务器,Resource Server是API服务器。开发者可以先浏览OAuth2.0的接口文档,熟悉OAuth2的接口及参数的含义,然后我们根据应用场景各自说明如何使用OAuth2.0。注意事项:(1) OAuth2.0授权无需申请,任何应用都可以使用。如果开发者需要更长
21、的授权有效期参考本文档授权有效期部分。(2) 如果你是站外网页应用或客户端应用,出于安全性考虑,需要在平台网站填写redirect_url(授权回调页),才能使用OAuth2.0,填写地址:http:/ 对于客户端,我们也提供了默认的回调页地址。详细请查看授权页功能部分。1.5 开发平台介绍本设计的开发平台是windows xp/7,由于windows系列操作系统做为市场份额最大的PC操作系统,无论是用户数还是基于windows平台应用数都是遥遥领先的。大多数开发者都会选择此平台作为开发平台,而且很多应用在windows 平台提供了的相应的开发工具,如eclipse、QT等。所以本论文采用wi
22、ndows平台作为开发平台。1.6 开发工具eclipse简介eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,eclipse附带了一个标准的插件集,包括 Java 开发工具(Java Development Kit,JDK)。虽然大多数用户很乐于将 eclipse 当作 Java 集成开发环境(IDE)来使用,但Eclipse 的目标却不仅限于此。eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 eclipse
23、的软件开发人员,因为它允许他们构建与 eclipse 环境无缝集成的工具。由于eclipse 中的每样东西都是插件,对于给eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。1.7 开发语言和开发环境由于Android上层应用的开发是使用Java语言的。所以,本文开发语言为java。开发Android 项目需要android 开发包(android_sdk_for Windows),所以eclipse装有android开发插件,从而运行Android 模拟器 ,模拟android智能手机。1.8 课题目标、内容、意义了解Android应用
24、程序的设计和开发过程行。使用多种组件进行Android 平台新浪微博客户端的开发。本软件是基于Eclipse 的开发环境,依托新浪微博开放平台提供的接口,开发出针对Android平台的新浪微博客户端。本课题研究的主要内容是熟悉新浪微博Android SDK,使用Java 语言编写,通过新浪微博开放平台提供的接口去创建微博客户端应用。 本课题研究的意义在于使用基于Android系统的新浪微博客户端可以方便的在本 系统中使用发微博,评论微博,转发微博,消息提醒,为用户推荐微博等全面的功能。用户可以随时随地的更新自己的微博信息,把看到的、想说的一切都以最快的速度分享给大家。1.9 论文结构经过这一段
25、时间的学习和努力,基本上可以说完成了设计需求。本文是对毕业设计工作的总结,全文共分六章,内容如下: 第1章 绪论 概括了开发的背景、意义与发展趋势。 第2章 开发平台与开发工具 介绍了开发环境及所用开发语言。 第3章 系统分析 进行了可行性分析、需求分析,以及介绍了系统规划概述。 第4章 系统设计 介绍系统的总体框架,并且对各个功能模块做了划分和简介。第5章 详细设计与编码 针对每个功能模块进行了详细的介绍和设计思想的分析,以及使用方法的介绍和每个模块间的跳转;第6章 系统测试 介绍了系统的测试条件、测试流程、测试用例和测试结果。2 系统分析2.1 可行性分析2.1.1 市场的可行性一个项目是
26、否有开发的必要,要看这个项目有没有市场或者是潜在的市场,以及开发结果是否能够应对市场的发展变化。有需求才会有市场,有市场才会有开发新技术的必要,市场推动技术的发展进步。有时,即便没有经济实力和技术支持,只有找到合适的市场,依然可以通过找风投等途径来获得资金支持和技术支持的。因此,市场是项目的基础和前提。 本系统是基于移动平台的微博客户端系统,是人们及时了解最新新闻最热话题及朋友交流的重要工具。睡前刷微博,起床前刷微博几乎成为了大多数用户的生活习惯。在微博已经如此受欢迎的前提下,完善它的功能,美化它界面就一定会有市场潜力。2.1.2 经济的可行性本应用所用的安卓系统是开源的,而且设备仅仅需要虚拟
27、机或者Android手机,因此开发成本比较低,所以开发基于Android移动平台的微博客户端在经济上是可行的。2.1.3 技术的可行性新浪微博Android平台SDK为第三方微博应用提供了文档易用的微博API调用服务,使第三方客户端无需了解复杂的验证,基于Android系统开发使用Java作为编程语言具有良好的平台移植性和可扩展性,所以在技术上也是可行的。2.1.4 运行的可行性本应用是基于Android系统手持移动终端,Android系统在智能手机和平板电脑市场拥有较高的市场份额,每个手机厂商为了吸引用户也积极地推出更新版本和硬件配置更高的终端,而本系统对于一般的Android手机硬件配置运
28、行起来都是没有问题的,所以在运行上也是可能的。2.2 需求分析2.2.1 对功能的规定(1) 界面必须有开始界面(当程序启动的时候显示开始界面,几秒之后跳的登陆界面)。完成下列情况的任一种即可:仅仅输出信息;显示一张或一些图片;设计一些有创意的动画。(2) 登录使用新浪的接口完成登录;保存登录信息。描述:能够保存用户登录信息。要求:用SharedPreferences存储登录信息;第一次登录的时候从新浪的接口登录,第一次成功登录以后,之后每次都可直接登录无需授权。(3) 主界面登陆后跳到微博主界面。 分类选项菜单描述:显示分类选项菜单来选择不同的功能模块,完成下列情况的任一种即可:使用TabH
29、ost显示不同的标签菜单;使用系统菜单;其他有创意的方式。 发送微博按钮描述:提供发送微博信息的按钮,点击后跳到发送页面。 显示当前用户名描述:在主界面上显示当前用户名。(4) 最新的微博信息显示最新的微博信息。 微博列表描述:以列表的方式逐条显示微博信息。 刷新描述:点击刷新按钮,重新读取最新的微博信息并显示。 数量限制描述:限制每次读取的微博信息数量。 更多描述:列表底部显示更多按钮,点击后获取更多微博信息。 保存到本地描述:要求将每条公共微博信息保存到本地数据库中,在断网的情况下也可以显示读取过的微博信息。(5) 我的资料显示登录用户的信息。 地址描述:显示登录用户的地址。 登录名描述:
30、显示登录用户的用户名。 其他描述:显示其他信息,完成下列情况:显示关注的微博数量;显示本人发表的微博数量;显示本人的粉丝数量;显示本人的收藏数量。(6) 设置描述:可设置一些界面显示参数,完成下列情况的任一种即可。如字体的大小;不同的主题背景;其它更有创意的设计。2.2.2 对性能的规定本应用在设计方面本着方便、实用及娱乐性高的宗旨,性能方面应遵循如下原则:流畅性: 运行应该流畅,不会出现卡机;美观性: 界面应力求美观,赏心悦目;稳定性: 运行过程中不会出现BUG;资源损耗:设计尽量节约资源;不用的资源应及时回收;2.2.3 对可维护性的规定对可维护性的最终要求:别人能够轻松上手你的代码。结构
31、清晰:封装良好;继承关系清晰;代码块清晰;变量命名规范:变量名应该具有自明性;注释充分:变量、方法、代码功能块、一些复杂算法等都需要清晰明了地说明。2.2.4 对个性的规定把项目做出个性出来。下列各项中有和比人不同之处、或很有创意,即可认为有个性。独立设计的软件,一般都会出现一些个性。参考、抄袭不会出现个性。 设计思路:包括软件的整体架构、功能块的设计思路等等;功能实现:从用户的角度,使用上发现与众不同的地方;其它方面。2.3 系统规划概述凡事预则立,不预则废。科学的规划对于任何需要经过较长时间努力才能实现的事情都是非常重要的。规划,一般是指对较长时期的活动进行总体的、全面的计划。现代社会组织
32、,特别是企业的结构和活动内容都很复杂,应该充分认识这一阶段工作所具有的特点,以提高系统规划工作的科学性和有效性。 (1) 系统规划工作是面向长远的、未来的、全局性和关键性的问题,因此它具有较强 的不确定性,非结构化程度较高。 (2) 其工作环境是组织管理环境,高层管理人员是工作的主体。 (3) 系统规划是为整个系统建设,确定目标、战略、系统总体结构方案以及资源计划。 因而,整个工作过程是一个管理决策过程。同时,系统规划也是技术与管理相结合的过程,它确定了利用现代信息技术有效的支持管理决策的总体方案。 (4) 系统规划人员对管理与技术环境的理解程度、对管理与技术发展的见识,以及开创精神与务实态度
33、是规划工作的决定因素。 (5) 规划工作的结果是要明确回答规划工作内容中提出的问题,描述出系统的总体概 貌和发展进程,为系统的发展制定一个科学而又合理的目标和达到该目标的可行方案,而不是替代后续阶段的工作。3 系统设计3.1 系统总体框架在三层结构中,解决了客户机/服务器模式面临的许多问题。通过划分客户与服务器之间的功能,分布式计算提供了一种把应用中的用户界面从企业逻辑中分离出来的自然方法。在分布式环境下,企业逻辑提供了一种把应用中的用户界面从企业逻辑中分离出来的自然方法。在分布式环境下,企业逻辑集中地安装在应用服务器上,这样就降低了客户端的负载,同时对敏感信息的访问也可以得到很好的控制。采用
34、分布式计算有着多方面的技术优势,包括:(1) 封装性 (2) 性能 (3) 安全性管理 在分布式计算模式中,由于所有的商业逻辑都驻留在服务器端,信息管理部就可以十分方便地监控服务器的运行情况,很容易地控制访问服务器以及与服务器应用打交道人员的数量。这可以大大简化管理员对系统的管理,减轻系统维护的工作量,并确保系统的可靠运行。软件设计时,考虑到整个系统的延续性和可扩充性,将系统应用体系分为三部分:用户表现层、数据访问层、商业逻辑层。 (1) 用户表现层:处理用户界面的功能; (2) 数据访问层:在通常情况下指数据库; (3) 商业逻辑层:指在程序中做出职能决策的那一部分功能。微博客户端的功能模块
35、图如图3.1所示。图3.1 功能模块图3.2 功能模块设计本新浪微博客户端大致分为首页、微博详情、用户信息、发布微博、查看评论等模块,分别负责不同的功能: (1) 授权模块:访问用户的信息与数据需要经过用户的授权,所以必须有用户授 权的模块本软件才能正常使用。 (2) 首页:是用户浏览微博的界面,会将用户所关注的人的微博按照时间先后顺 序排列,其中会显示微博的作者、发布时间、内容、转发评论数量、发布方式等。首页是用户使用最多的界面,也是软件初次打开的默认界面。 (3) 微博详情:当用户在首页浏览微博的时候,点击某一条微博就会进入到微博 详情的界面,这个界面会更详细的展示用户所点击的那条微博,并
36、且提供转发和评论的功能按钮。 (4) 用户信息:用户信息是展示用户的界面,何以展示用户本身的信息并修改,也可以查看任何用户感兴趣的用户。 (5) 发表微博:用来发布新微博的界面。 (6) 查看评论:用来浏览某一条微博的评论,转发和评论时也会用到这个模块。(7) 更多设置:包括了字体大小、背景更换和版本信息等功能设置。 4 详细设计与编码4.1 授权功能模块4.1.1 应用启动与授权当点击应用图标启动后,会有新浪微博的开启界面并且持续3秒;之后将进入新浪官方提供的授权流程。OAuth认证授权分三步, (1) 获取未授权的Request Token;(2) 获取用户授权的Request Token
37、;(3) 用授权的Request Token换取Access Token。当应用拿到Access Token后,就可以有权访问用户授权的资源了。其中,每步分别请求一个URL,并收到相关信息,拿到上步相关信息去请求接下来的URL直到拿到Access Token。具体每步执行信息如下:(1) 使用者(第三方应用)向OAUTH服务提供商请求未授权的Request Token。向Request Token URL发起请求,请求需要带上参数。(2) OAuth服务提供商同意使用者的请求,并向其颁发未经用户授权的oauth_token与对应的oauth_token_secret,并返回给使用者。(3) 使
38、用者向OAuth服务提供商请求用户授权的Request Token。向User Authorization URL发起请求,请求带上上步拿到的未授权的token与其密钥。(4) OAuth服务提供商将引导用户授权。该过程可能会提示用户,你想将哪些受保护的资源授权给该应用。此步可能会返回授权的Request Token也可能不返回。如Yahoo OAuth就不会返回任何信息给使用者。(5) Request Token 授权后,使用者将向Access Token URL发起请求,将上步授权的Request Token换取成Access Token。(6) OAuth服务提供商同意使用者的请求,并向
39、其颁发Access Token与对应的密钥,并返回给使用者。(7) 使用者以后就可以使用上步返回的Access Token访问用户授权的资源。 从上述步骤来看,用户始终没有将其用户名与密码等信息提供给使用者(第三方软件),从而使得更安全。用OAuth实现背景一节中的典型案例:当服务B(打印服务)要访问用户的服务A(图片服务)时,通过OAuth机制,服务B向服务A请求未经用户授权的Request Token后,服务A将引导用户在服务A的网站上登录,并询问用户是否将图片服务授权给服务B。用户同意后,服务B就可以访问用户在服务A上的图片服务。整个过程服务B没有触及到用户在服务A的帐号信息。 本软件使
40、用新浪微博的 android SDK来辅助开发,这里面已经集成了一个开源的java OAuth认证包。授权过程如图4.1所示。图4.1 授权流程图获取token值成功后,就完成了授权。4.2 微博首页模块当授权成功后,将运行下面一段代码。这样在manifest文件中注册Activity就会启动。这里用的是隐式启动,Intent中所填的值是manifest文件中首页界面Activity的Action属性。这样,微博首页就会启动。Intent intent = new Intent(微博首页Activity的action属性); AOuthActivity.this.finish();startA
41、ctivity(intent);在新打开的Activity中有一个主要控件ListView,在ListView中的每一个Item中展示每一条微博信息。将获得的Access_token值存储到sharedPreference中,这样用户就只需在首次登录时使用授权,以后就可以直接获取数据。 private Oauth2AccessToken mAccessToken; mAccessToken = AccessTokenKeeper.readAccessToken(上下文);接着启动了一个bindService去处理和下载各种微博信息和用户信息。本系统将所有的功能操作和耗时操作以及微博回调类都放在
42、Service中完成,通过Handler发消息来通知Mainactivity进行操作,并且利用onServiceConnected传输数据。接下来,将一一介绍这些部分。 Intent intent = new Intent(服务的action属性);bindService(intent, connection, Service.BIND_AUTO_CREATE);由于获取网络数据所消耗的时间较长,且手机的网络信号不稳定因素更多,所以我们将它放在独立的线程中来完成。当然可以用java的线程来实现,但是android为我们提供了更加简单和方便的方法,继承AsyncTask这个类并实现其中的doIn
43、Background方法,把你希望在独立线程中执行的代码放在这个方法中,然后在主线程中执行该类对象的exectue方法就可以了。这里选择这中方法而不应java自身提供的线程机制还有一个原因,就是andorid系统规定,只能在主线程中执行对UI控件的操作,在其它线程中不行。但是在andorid提供的AsyncTask这个类允许在其它线程中对控件进行操作。服务启动后,将首先调用friendsTimeline方法去下载微博信息。返回的微博信息存在statuslist中。 friendsTimeline(long since_id, long max_id, int count, int page,
44、boolean base_app,int featureType, boolean trim_user, RequestListener listener); 这个方法有8个参数:(1) since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0。(2) max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0。(3) count 单页返回的记录条数,默认为50。(4) page 返回结果的页码,默认为1。(5) base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为
45、false。(6) featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0。(7) trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false。(8) listener 异步请求回调接口。这样就得到了20条微博信息,存放在statuslist中。接着,就要用Adapter去拿着刚得到的statuslist微博信息去填充之前提到的listview。在Android中,用列表控件来显示一组数据,比如显示存储在数组中的很多人名,再比如显示从数据库查询出来的结果列表。Androi
46、d将显示和数据分开来处理,在这二者中起到桥梁作用的就是adapter,如图4.1所示。图4.2 列表控件、adapter、数据间的关系图图左边是一个列表控件,只是一个空间集合,内部含有子控件,真正的内容是要显示在这些子控件中的,其实列表控件就是一个空间集合。图右边是数据集合,可以是数组,数据库,或是任何组织方式的数据。图中间就是adapter,它是列表控件和数据间的桥梁,指向的那个R.layout.childview就是将要放置在列表控件中的子控件,那么,adapter在列表控件中子控件的显示内容起到了决定性的作用。在这里,用到的是BaseAdapter,用自己需要的adapter去继承它,并
47、且实现其中4个方法:(1) public int getCount();返回数据的大小,在这里返回从微博一次要取回的数据大小。那么,返回mweibos.size(); (2) public Object getItem(int arg0); 从数据集合中返回参数arg0指定的数据,这里返回第arg0个微博,因此,return mweibos.get(position);(3) public long getItemId(int position); 返回指定位置的数据的ID,这里返回的是新浪提供的微博ID,return position; (4) public View getView(int position, View convertView, ViewGroup parent); 这个方法比较重要,它的功能是将相应的数据放到一个子控件中,然后返回子控件,供父控件(列表控件)使用。第一个参数指定出数据的位置,第二个参数是要传给父控件的子