毕业论文-基于Android的微博客户端_第1页
毕业论文-基于Android的微博客户端_第2页
毕业论文-基于Android的微博客户端_第3页
毕业论文-基于Android的微博客户端_第4页
毕业论文-基于Android的微博客户端_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

太原理工大学毕业设计(论文)用纸 太原理工大学毕业设计(论文)任务书第1页毕业设计(论文)题目:基于android的手机微博客户端毕业设计(论文)要求及原始数据(资料):1、搜集资料,为论文做好前期准备。对所涉及的主要知识,进行全面的复习。2、对业务逻辑进行数据建模,确定毕业设计所需要的技术框架。3、需求分析,设计数据库表,对系统进行总体的设计。4、对系统的进行详细的设计,并对整个系统进行详细的测试,尽量避免BUG。5、根据业务逻辑,设计接口以及抽象类。6、针对接口完成后台业务逻辑的实现。7、根据毕业设计完成毕业论文。8.训练检索文献资料和利用文献资料的能力;9.训练撰写技术文档与学位论文的能力。第2页毕业设计(论文)主要内容:1、了解微博系统的开发背景及研究意义。2、学习微博理系统设计所需使用的相关技术。3、对微博系统进行需求分析及总体设计和详细设计。4、实现授权登录,按时间线浏览好友微博,自己发表微博,私信好友,查看我的听众和我的收听,对微博内容进行转发和评论,查看好友的资料,好友历史所发微博,好友的听众和收听5、对设计进行总结学生应交出的设计文件(论文):1.内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文;2.包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。第3页主要参考文献(资料):[1]姚尚朗,靳岩.Coogleandroid开发入门与实践[M].人民邮电出版社,2009[2]柯元旦.Android内核剖析[M].电子工业,2011[3]SayedY,Hashimi.ProAndroid[D].Apress,2011[4]

EdBurnette.Hello,Android[J].PragmaticBookshelf,2008[5]BruceTate.BitterJava[D].ManningPublications,2002[6]杨丰盛.Android应用开发揭秘[M].机械工业出版社,2010[7]JoshuaBloch,Effective.JavaProgrammingLanguageGuide[D].Addison-WesleyProfessional,2001[8]邓凡平.深入理解android[M].机械工业出版社,2011[9]袁国忠.android应用UI设计模式[M].人民邮电出版社,2013[10]余志龙.王志江.GoogleandroidSDK开发范例大全[M].人民邮电出版社,2010专业班级软件1027班学生要求设计(论文)工作起止日期2014年3月17日~2014年6月27日指导教师签字日期2014年3月17日教研室主任审查签字日期系主任批准签字日期绪论1.1课题背景2014年4月17日,是个重要的日子,这一天新浪微博在美国纳斯达克股票交易所正式挂牌上市,很幸运在这次课题研究期间新浪微博作为首家中文社交媒体上市。摩尔定律的持续实现使得计算机界无时无刻不在发生着日新月异的变化,计算机芯片功能越来越强大以及体积越来越小,手机这样的移动终端设备在逐渐的挖掘自身的市场价值,苹果公司作为软硬件一体的科技公司,他的iphone系列手机在市场中如日中天,而google作为世界第一的互联网企业,凭借着开源的android系统,与各大硬件厂商合作,也分食着手机市场这块大蛋糕。微软作为昔日的IT巨头,也在卖力的开发着自己的移动端操作系统。移动互联网市场注定是一个前途无限的市场。在互联网领域,社交媒体的火爆在全世界都有目共睹,fackbook无疑是如今社交媒体火爆最好的证明,此外,还有twitter也是著名的社交平台,2009年8月中国门户网站新浪推出“新浪微博”内测版,成为门户网站中第一家提供微博服务的网站,微博正式进入中文上网主流人群视野。随着微博在网民中的日益火热,国内各大互联网企业都纷纷开始开发自己的微博平台。如今,这些社交网路都把其范围拓展到移动手机平台领域,借助手机的普遍性和无线网络的应用,利用各种交友/即时通讯/邮件收发器等软件,使手机成为新的社交网络的载体。但是由于各大平台基于市场利益的考虑,均有不同程度的涉及广告的行为,而且为了满足不同用户的需求,往往包含了太多不怎么用到的功能,造成极不好的用户体验,本课题致力于开发出一款基于android的微博客户端,为用户提供简洁,流畅的用户体验。1.2微博简介1.2.1微博的定义微博是一种通过关注机制分享简短实时信息的广播式社交网路平台。其中有五方面的理解:1)关注机制:可单项可双向两种;2)简短内容:通常为140字(包括标点符号);3)实时信息:最新实时信息;4)广播式:公开的信息,谁都可以浏览;5)社交网路平台:把微博归为社交网络。通俗的解释:微博提供了这样一个平台,你既可以作为观众,在微博上浏览你感兴趣的信息;也可以作为发布者,在微博上发布内容供别人浏览。发布的内容比较短,一般为140个字,当然也可以发图片,视频和网页链接等,在微博发布信息快,传播速度也快。1.2.2微博的发展历程2006年3月obvious推出了大微博服务,在最初阶段,这项服务只是用于向好友的手机发送文本信息。用户能用如发手机短信的数百种工具更新信息。Twitter的出现把世人的眼光引入了一个叫微博的小小世界里。Twitter是一个社交网络及微博客服务。用户可以经由SMS、即时通信、电邮、Twitter网站或Twitter客户端软件输入最多140字的文字更新,Twitter被Alexa网页流量统计评定为最受欢迎的50个网络应用之一。从2007年中国第一家带有微博色彩的社交网络饭否网开张,到2009年,微博这个全新的名词,以摧枯拉朽的姿态扫荡世界,成为全世界最流行的词汇。2010年国内微博迎来春天,微博像雨后春笋般崛起。四大门户网站均开设微博。根据相关公开数据,截至2010年1月份,该产品在全球已经拥有7500万注册用户。截至2013年3月,新浪微博注册用户数达到5.03亿,得益于抢占了先机,而且在整体的战略执行上也比较彻底到位,所以获得了地位。仅仅几年时间,新浪微博就为新浪生下了一个价值几十亿美金的‘金蛋’。而另一个微博巨头:腾讯微博,也呈现出发展迅猛的姿态,腾讯拥有近7.5亿的QQ注册用户,3亿左右的活跃用户。这部分人群很容易受潮流趋势的影响,开通腾讯微博。通过腾讯微博能够与QQ好友和腾讯微博上的其他用户进行信息的分享。1.2.3微博的特点1)便捷性微博网站即时通讯功能非常强大,通过QQ和MSN直接书写,在有网络的地方,只要有手机也可即时更新自己的内容,哪怕你就在事发现场。2)背对脸与博客上面对面的表演不同,微型博客上是背对脸的交流,就好比你在电脑前打游戏,路过的人从你背后看着你怎么玩,而你并不需要主动和背后的人交流。可以一点对多点,也可以点对点。当你follow一个自己感兴趣的人时,两三天就会上瘾。移动终端提供的便利性和多媒体化,使得微型博客用户体验的粘性越来越强。3)原创性在微博客上,140字的限制将平民和莎士比亚拉到了同一水平线上,这一点导致大量原创内容爆发性地被生产出来。李松博士认为,微型博客的出现具有划时代的意义,真正标志着个人互联网时代的到来。博客的出现,已经将互联网上的社会化媒体推进了一大步,公众人物纷纷开始建立自己的网上形象。然而,博客上的形象仍然是化妆后的表演,博文的创作需要考虑完整的逻辑,这样大的工作量对于博客作者成为很重的负担。“沉默的大多数”在微博客上找到了展示自己的舞台。1.3Android简介Android是一种基于linux的开源操作系统,由google公司和开放手机联盟领导及研发,主要应用与手机和平板电脑之上。Android的系统架构和其操作系统一样,采用分层架构,Android分为4个层,分别是应用程序层、应用程序框架层、系统运行库层和linux内核层。1)应用程序层该层提供一些核心应用程序包,包括客户端、短消息、日历、地图、浏览器、联系人,电子邮件等,同时,开发者可以可以利用java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等[1]。2)应用程序框架层该层是Android应用开发的基础。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。3)系统库和android运行时系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、、android.media等等。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。linux内核层Android基于Linux2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。LinuxKernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各尽其职,各层提供固定的SAP(ServiceAccessPoint),专业点可以说是高内聚、低耦合。如果你只是做应用开发,就不需要深入了解LinuxKernel层。1.4本文的主要研究内容和意义本课题研究的内容包括创建基于Android平台的微博客户端应用,使用Java语言编写,通过腾讯微博开放平台提供的接口创建的微博客户端应用。当前社交网路呈一片繁荣景象,新浪微博更是发展迅猛,在美国纳斯达克上市。其他社交媒体平台也不甘落后,纷纷拿出自家本领,希望能在这块市场上分一杯羹,但是,但是社交网络的用户形形色色,不可能有一个客户端满足所有用户的追要求,所以将来社交网络平台一定呈现性格化、风格化趋势,除了用户所必须的体验之外,各大社交平台都应提供自身所特有的体验来满足用户的需求,在将来市场必定细分的前提下,我们的产品只要保证有独树一帜的特色,在用户体验,用户交互以及内容提供等方面做足,未来一定会有我们的一片天地。腾讯微博Android平台SDK为第三方微博应用提供了文档易用的微博API调用服务,使第三方客户端无需了解复杂的验证,我们可以直接调用腾讯为我们封装好的接口来获取我们所需要的数据,而使用Java作为编程语言具有良好的平台移植性和可扩展性,所以在技术上是可行的。应用程序启动后,可以通过使用腾讯的微博开放平台的SDK,利用接口调用返回的一系列数据,进行用户的注册,用户信息配置,授权认证,用户登录。登录成功之后进入程序的首页,可以从腾讯的数据库中得到所登陆账号的数据,显示其微博好友发布的最新信息、转发评论数,以及相关图片的浏览。可以查看好友的个人信息、粉丝数量、发表的话题、所有发表过的微博以及其关注的好友情况。基本的功能有:1)启动应用程序,进入授权界面2)如果用户是第一次登陆,将进入授权界面,在此页面,用户可以直接输入自己的QQ邮箱和密码进行授权,取得腾讯的授权认证。如如果用户已经在该应用中登录过,则只需选择需要登录的账号,不用再输入用户名和账号等繁琐操作就可直接登录系统。3)用户登录系统之后,进入微博客户端首页,用户可以查看到自己关注到的好友的最新微博信息。4)点击好友发表的某一条微博信息,进入微博浏览页面,可以查看到这条微博信息的全面内容,包括粉丝评论、评论数、转发数、图片等多媒体信息。用户可以点击屏幕下方的评论按钮,发表自己对该篇微博的评论。点击转发按钮则可以转发这条微博内容。5)点击好友头像,进入好友个人信息浏览页面,在此页面可以点击屏幕上方的关注好友按钮,对好友进行关注和取消关注的操作。在屏幕中央的显示页面,可以查看到好友的地址,个人说明的信息。在屏幕的下方有四个按钮,分别可以查看该好友发表过的所有微博信息,该好友所关注的所有好友,发表过的所有话题、粉丝数量和所有粉丝列表。同时也可以查看粉丝的个人信息,用户可以自己对感兴趣的粉丝也添加关注。6)回到应用的首页,在屏幕的上方有一个发表微博的按钮,用户输入内容,点击发送可以发表自己的微博。用户也可以在此页面点击刷新按钮,刷新当前的最新微博。2014年4月17日,是个重要的日子,这一天新浪微博在美国纳斯达克股票交易所正式挂牌上市,很幸运在这次课题研究期间新浪微博作为首家中文社交媒体上市。摩尔定律的持续实现使得计算机界无时无刻不在发生着日新月异的变化,计算机芯片功能越来越强大以及体积越来越小,手机这样的移动终端设备在逐渐的挖掘自身的市场价值,苹果公司作为软硬件一体的科技公司,他的iphone系列手机在市场中如日中天,而google作为世界第一的互联网企业,凭借着开源的android系统,与各大硬件厂商合作,也分食着手机市场这块大蛋糕。微软作为昔日的IT巨头,也在卖力的开发着自己的移动端操作系统。移动互联网市场注定是一个前途无限的市场。在互联网领域,社交媒体的火爆在全世界都有目共睹,fackbook无疑是如今社交媒体火爆最好的证明,此外,还有twitter也是著名的社交平台,2009年8月中国门户网站新浪推出“新浪微博”内测版,微博正式进入中文上网主流人群视野。2系统分析2.1可行性研究1)市场的可行性当前社交网路呈一片繁荣景象,新浪微博更是发展迅猛,在美国纳斯达克上市。其他社交媒体平台也不甘落后,纷纷拿出自家本领,希望能在这块市场上分一杯羹,但是,但是社交网络的用户形形色色,不可能有一个客户端满足所有用户的追要求,所以将来社交网络平台一定呈现性格化、风格化趋势,除了用户所必须的体验之外,各大社交平台都应提供自身所特有的体验来满足用户的需求,在将来市场必定细分的前提下,我们的产品只要保证有独树一帜的特色,在用户体验,用户交互以及内容提供等方面做足,未来一定会有我们的一片天地。2)技术的可行性腾讯微博Android平台SDK为第三方微博应用提供了文档易用的微博API调用服务,使第三方客户端无需了解复杂的验证,我们可以直接调用腾讯为我们封装好的接口来获取我们所需要的数据,而使用Java作为编程语言具有良好的平台移植性和可扩展性,所以在技术上是可行的。3)运行上的可行性本应用是基于Android系统的移动终端,Android系统手机在智能手机市场都有的占有率是世界第一,各个手机厂商也争先推出最新版本和硬件配置更高的手机,从一般的Android手机硬件配置来看运行本系统应该是绰绰有余的,所以在运行可行性上更是可行的。2.2需求分析应用程序启动后,可以通过使用腾讯的微博开放平台的SDK,利用接口调用返回的一系列数据,进行用户的注册,用户信息配置,授权认证,用户登录。登录成功之后进入程序的首页,可以从腾讯的数据库中得到所登陆账号的数据,显示其微博好友发布的最新信息、转发评论数,以及相关图片的浏览。可以查看好友的个人信息、粉丝数量、发表的话题、所有发表过的微博以及其关注的好友情况。基本的功能需求有:1)启动应用程序,进入授权界面2)如果用户是第一次登陆,将进入授权界面,在此页面,用户可以直接输入自己的QQ邮箱和密码进行授权,取得腾讯的授权认证。如如果用户已经在该应用中登录过,则只需选择需要登录的账号,不用再输入用户名和账号等繁琐操作就可直接登录系统。用户登录系统之后,进入微博客户端首页,用户可以查看到自己关注到的好友的最新微博信息。点击好友发表的某一条微博信息,进入微博浏览页面,可以查看到这条微博信息的全面内容,包括粉丝评论、评论数、转发数、图片等多媒体信息。用户可以点击屏幕下方的评论按钮,发表自己对该篇微博的评论。点击转发按钮则可以转发这条微博内容。点击好友头像,进入好友个人信息浏览页面,在此页面可以点击屏幕上方的关注好友按钮,对好友进行关注和取消关注的操作。在屏幕中央的显示页面,可以查看到好友的地址,个人说明的信息。在屏幕的下方有四个按钮,分别可以查看该好友发表过的所有微博信息,该好友所关注的所有好友,发表过的所有话题、粉丝数量和所有粉丝列表。同时也可以查看粉丝的个人信息,用户可以自己对感兴趣的粉丝也添加关注。回到应用的首页,在屏幕的上方有一个发表微博的按钮,用户输入内容,点击发送可以发表自己的微博。用户也可以在此页面点击刷新按钮,刷新当前的最新微博。3系统概要设计3.1系统功能模块划分模块划分能清楚的表达系统需要实现的功能,把一个整体的系统分成若干个小的模块,把问题简单化,有利于进一步的思考项目的实现。我设计的微博客户端共分为7个功能模块,如图3-1所示。微博客户端用户最新微博列表发表新微博评论微博转发微博查看好友资料查看好友详细信息登录或授权认证微博客户端用户最新微博列表发表新微博评论微博转发微博查看好友资料查看好友详细信息登录或授权认证图3-1系统的功能模块图3.2系统的总体结构设计系统的总体结构设计需要知道系统各个模块之间的关系,每个模块可能是由一个或多个画面组成的,这么多个画面共同构成了微博的客户端。系统的设计基于android提供的图形图像界面技术,系统能够有多个视图,而且可以实现图片视频播放,根据手指的点击,滑动等手势对程序进行操控。系统整体设计中采用软件工程的思想,利用MVC的设计模式对软件进行架构是系统的结构调理清晰,便于后期维护升级。在系统的数据和安全性方面,本系统采用OAuth认证的方式,采用这种方式用户需要有userid,AccessToken、AccessSecret这3个要素才能自由便利的调用腾讯的开放接口。当用户第一次使用软件时,进行授权认证获取这3个要素,同时将其存储到SharedPreferences中以便用户下次登陆时使用。当用户再次打开软件时就不需要再次进行繁琐的授权认证操作,直接从SharedPreferences中读取出来即可使用。它的具体实现为:当用户打开软件显示载入页面时检查SharedPreferences中是否已经保存有用户的腾讯微博的UserID、AccessToken、AccessSecret,如果没有就说明用户是第一次使用本软件,然后跳到认证授权页面进行授权认证操作,获取这3个值并且保存到SharedPreferences中,如果已经包括了记录那么读取这些记录的UserID、AccessToken、AccessSecret的值然后根据这3个值调用腾讯的API接口获取这些记录对应的用户信息。OAuth认证原理及交互图如图3-2,3-3所示。图3-2OAuth认证原理图3-3OAuth认证交互图3.3系统模块用例图用户登录和授权模块功能描述:如果用户第一次使用该应用,在程序启动之后进入登陆页面,输入用户名和密码进行授权认证。如果用户已经通过了授权认证则可以不用输入用户名和密码,选择用户进行登录。如图3-4所示。参与者:未通过授权认证或者未登录。前置条件:未通过授权认证或者未登录的用户。后置条件:通过授权配置或者直接登录系统。图3-4用户登录和授权模块用户启动应用程序,判断用户是否已授权,如果未授权,进行授权配置,授权后登陆到应用首页,如果已授权直接进行登陆,进入到应用程序的首页。用户登录和授权模块流程图如图3-5所示。判断是否存在已授权用户授权配置开始启动应用登录登录到应用首页结束是否判断是否存在已授权用户授权配置开始启动应用登录登录到应用首页结束是否图3-5用户登陆授权模块流程图2)系统首页信息模块功能描述:按时间顺序展示好友最近更新的微博。如图3-6所示。参与者:合法登录用户。前置条件:已登录用户。后置条件:在首页显示所有被用户添加关注的最新微博信息列表。图3-6系统首页信息模块用例图跳转主界面首先加载数据,进入首页,默认显示最新微博列表,可以发布新微博、查看我的收听和听众,主界面主页面流程图如图3-7所示。加载数据加载数据开始进入首页发表新微博结束显示最新微博的列表查看我的收听和我的听众图3-7主界面流程图3)发布微博模块功能描述:该模块主要实现了用户发布微博的功能。如图3-8所示。参与者:合法登录用户。前置条件:已登录用户。后置条件:新微博信息是否发表成功。图3-8用户发布微博模块用例图点击发布微博按钮,会弹出发布微博界面,输入内容,点击发送按钮发送微博,发送失败返回原来界面,可以继续发布。发布成功显示发布成功,用户发布微博流程图如图3-9所示。否是点击首页微博发送按钮开始输入内容点击发送否是点击首页微博发送按钮开始输入内容点击发送判断结束发送失败4)浏览微博内容模块(包括转发和评论俩个功能)功能描述:该模块实现了用户可以通过点击某一条微博信息查看该微博的所有内容,并进行评论和转发操作。如图3-10所示。参与者:已登录用户。前置条件:已登录用户。后置条件:可以进行转发和评论。图3-10浏览微博内容用例图点击评论按钮进入评论界面,在文本框输入评论内容,点击发送按钮发送,发送失败返回原来界面,可以继续发布。发布成功显示发布成功。评论、转发微博流程图如图3-11所示。否是点击评论按钮进入评论页面否是点击评论按钮进入评论页面开始结束输入评论内容点击发送判断评论失败图3-11评论微博流程图点击转发按钮进入转发界面,在文本框输入转发内容,点击发送按钮发送,发送失败返回原来界面。发布成功显示发布成功。转发微博流程图如图3-12所示。是否点击评论按钮进入转发页面是否点击评论按钮进入转发页面开始结束输入转发内容点击发送判断转发失败图3-12转发微博流程图5)查看用户信息模块(包含查看好友资料和详情)功能描述:查看好友的详细信息。如图3-13所示。参与者:合法登录用户。前置条件:已登录用户。后置条件:查看好友详细信息关注。图3-13查看用户信息模块用例图在主界面点击微博按钮,进入用户所有微博列表界面,点击某一条微博信息,查看微博的详细信息,点击更多跳转到好友详细信息,可以查看好友粉丝和关注。查看用户模块流程图如图3-14所示。结束结束点击微博按钮开始用户所有微博列表界面查看某一条微博详细信息同时进行评论和转发操作图3-14查看用户信息4系统详细设计4.1用户登录授权模块如今手机已成为人们生活中不可缺少的东西,尤其对于青少年,智能手机已是他们生活中的必备,没有智能手机他们甚至茶饭不思。而且,手机和传统pc很不同的一点在于,传统pc端的网络入口一般为浏览器,这也是为什么在传统互联网中百度和谷歌如此盛行的原因,但是在移动互联网的世界里,受手机屏幕尺寸等原因的限制,用户不再喜欢使用浏览器作为进入网络的入口,转而代之的是各种功能强大的app应用程序,互联网界一直流传着一句话,得用户者得天下,广大厂商为了使自己的app应用程序可以更加方便的使用,大都在用户第一次登录的时候便把用户的登录数据保存在手机终端,这样极大的方便了用户更方便的使用自己的app。由于本程序设计时采用腾讯微博的服务器端,而腾讯微博服务器端需要用户在使用第三方软件时进行授权,所以用户必须在腾讯微博授权才能使用我们的app程序。基于以上原因,本应用程序也采取这种方式,保存用户的登录数据使用户在下次打开app时不在重新输入用户名和密码。设计了帐号管理界面。如图4-1所示。图4-1帐号管理在帐号管理界面,有俩个按钮,进入和添加帐号,如果用户是第一次登录,点击进入按钮,界面不会跳转进入,而会提示需要先进行授权,我们点击添加帐号按钮,跳转到腾讯官方登录界面,在登录界面输入自己腾讯微博的用户名和密码进行授权,授权成功后,会返回到登录界面,这时再点击进入按钮进入微博主界面。与此同时,系统会自动保存用户的登录信息,用户在下次登录时无需再次输入帐号和密码可以直接点击进入按钮。当用户需要使用其他帐号登录时,需要再次登录腾讯微博官方登录界面,输入用户名和密码,授权给我们的应用程序。图4-2所示为点击添加帐号跳转的腾讯微博官方登录界面,在登录界面输入用户名和密码点击登录后就完成了授权,程序会再次返回帐号管理界面,点击进入按钮进入程序主界面。图4-2授权以下是实现上述功能的主要代码:为添加帐号按钮添加一个点击事件监听器并且实现他的点击方法,下面是点击方法里的代码。longappid=Long.valueOf(Util.getConfig().getProperty("APP_KEY"));Stringapp_secket=Util.getConfig().getProperty("APP_KEY_SEC");auth(appid,app_secket);在这里,我封装了一个auth方法,方法里的两个参数是访问腾讯微博服务器端所需提供的参数,腾讯微博服务器端根据这俩个参数判断我们的权限,提供服务使我们可以调用API实现各种功能。下面是提交参数后在各种情况下程序所走的路径。privatevoidauth(longappid,Stringapp_secket){finalContextcontext=this.getApplicationContext();AuthHelper.register(this,appid,app_secket,newOnAuthListener(){}如果当前设备没有安装腾讯微博客户端,走这里。publicvoidonWeiBoNotInstalled(){Toast.makeText(MainPage_Activity.this,"onWeiBoNotInstalled",1000).show();AuthHelper.unregister(MainPage_Activity.this);Intenti=newIntent(MainPage_Activity.this,Authorize.class);startActivity(i);}如果当前设备没安装指定版本的微博客户端,调用此方法。@OverridepublicvoidonWeiboVersionMisMatch(){Toast.makeText(MainPage_Activity.this,"onWeiboVersionMisMatch",1000).show();AuthHelper.unregister(MainPage_Activity.this);Intenti=newIntent(MainPage_Activity.this,Authorize.class);startActivity(i);}如果授权失败,调用此方法。@OverridepublicvoidonAuthFail(intresult,Stringerr){Toast.makeText(MainPage_Activity.this,"result:"+result,1000).show();AuthHelper.unregister(MainPage_Activity.this);}授权成功后,所有的授权信息是存放在WeiboToken对象里面的,可以根据具体的使用场景,将授权信息存放到自己期望的位置,在这里,存放到了applicationcontext中。@OverridepublicvoidonAuthPassed(Stringname,WeiboTokentoken){Toast.makeText(MainPage_Activity.this,"passed",1000).show();Util.saveSharePersistent(context,"ACCESS_TOKEN",token.accessToken);Util.saveSharePersistent(context,"EXPIRES_IN",String.valueOf(token.expiresIn));Util.saveSharePersistent(context,"OPEN_ID",token.openID);Util.saveSharePersistent(context,"REFRESH_TOKEN","");Util.saveSharePersistent(context,"CLIENT_ID",Util.getConfig().getProperty("APP_KEY"));Util.saveSharePersistent(context,"AUTHORIZETIME", String.valueOf(System.currentTimeMillis()/1000l));4.2系统首页信息模块一个程序的成败与它主界面的设计有莫大的关系,主界面对一个app程序起着至关重要的作用,它不但要使用户看起来清晰、美观,而且在功能的选择上也必须取舍得当。我本次设计登录界面在功能的选取方面也做了很大的功夫。界面中间部分是微博信息列表毋庸置疑,重点是上下功能栏的功能选取和设计,我参考了腾讯、新浪、网易、搜狐等多款微博app的设计,他们各不相同但是都有自己的特色。我结合自己的需求做了如下设计,“发布微博”作为微博的主要功能之一放在哪个位置一直备受争议,我的目标是致力与开发一款简洁方便的app程序,由于大部分用户习惯使用右手操作手机,所以,我把“发布微博”的功能放到了右上方。下方工具栏则放了一系列功能相似,级别相同的功能,而下方第一个按钮也与市面上几乎所有微博相同,放置了回到首页功能。主界面效果图如图4-3所示。图4-3首页微博列表应用程序主页按时间线显示好友最近微博信息,左上方放置刷新按钮,右上方放置发布微博功能,下方4个图标功能依次是回到主页、发私信、查看我的听众和我的收听,点击后各自会触发自己对应的功能,点击效果将在下面的章节中一一描述。以下方法是调用腾讯微博服务器API获得好友最近发布的微博的方法名以及参数的详解,以后我们会经常使用类似的方法来获取腾讯微博服务器端的数据,所以特此做一次详解。使我们熟悉和简单的理解腾讯服务器端怎么与我们的微博app应用进行数据交互,其中部分特殊的参数会在后续的章节中继续解释。获取主页时间线:publicvoidgetHomeTimeLine(Context

context,int

pageFlag,int

pageTime,int

reqnum,int

type,int

contenttype,\o"java.lang中的类或接口"String

format,\o"work中的接口"HttpCallback

mCallBack,\o"java.lang中的类或接口"Class<?extends\o"com.tencent.weibo.sdk.android.model中的类"BaseVO>

mTargetClass,int

resultType)参数:context-上下文pageFlag-分页标识(0:第一页,1:向下翻页,2:向上翻页)pageTime-本页起始时间(第一页:填0,向上翻页:填上一次请求返回的第一条记录时间,向下翻页:填上一次请求返回的最后一条记录时间)reqnum-每次请求记录的条数(1-70条)type-拉取类型(需填写十进制数字)0x1原创发表0x2转载如需拉取多个类型请使用|,如(0x1|0x2)得到3,则type=3即可,填零表示拉取所有类型contenttype-内容过滤。0-表示所有类型,1-带文本,2-带链接,4-带图片,8-带视频,0x10-带音频建议不使用contenttype为1的类型,如果要拉取只有文本的微博,建议使用0x80format-返回类型json/xmlmCallBack-回调函数mTargetClass-返回对象类,如果返回json则为nullresultType-BaseVO.TYPE_BEAN=0BaseVO.TYPE_LIST=1BaseVO.TYPE_OBJECT=2BaseVO.TYPE_BEAN_LIST=3BaseVO.TYPE_JSON=44.3发布微博模块“发布微博”对于微博应用是一个十分重要的功能。我在这里也做了许多的工作来完成发布微博的功能,微博通俗的解释就是微型博客,为什么叫微型博客?因为微博仅仅允许编辑140字,几乎所有主流微博都遵守这一特性,我们的微博也将沿用此特点,为了丰富微博的功能,我们还为允许在编辑中加入图片、连接、特殊符号、表情等。这样做可以丰富微博的内容,使微博不仅仅拘泥于死板的文字,增加微博的趣味性。如图4-4所示。图4-4发布微博点击主界面右上方会跳到发布微博界面,在文本框中可以输入文字、图片、@符号、表情等编辑符号。右上方为发送按钮,点击按钮会将编辑框中的内容发送到服务器端,我们回到主页后点击刷新按钮可以看到我们新发送的微博。同样的,发送微博也会调用腾讯微博API接口,下面的方法为发布微博所调用的方法及参数详解(为了说明较难懂的参数,再次给出参数详解)。publicvoidaddWeibo(Contextcontext,Stringcontent,Stringformat,doublelongitude,doublelatitude,intsyncflag,intcompatibleflag,HttpCallbackmCallBack,Class<?extendsBaseVO>mTargetClass,intresultType)参数:context-上下文content-微博内容(若在此处@好友,需正确填写好友的微博账号,而非昵称),不超过140字format-返回数据的格式(json或xml)longitude-经度,为实数,如113.421234(最多支持10位有效数字,可以填空)不是必填latitude-纬度,为实数,如22.354231(最多支持10位有效数字,可以填空)不是必填syncflag-微博同步到空间分享标记(可选,0-同步,1-不同步,默认为0),目前仅支持oauth1.0鉴权方式不是必填compatibleflag-容错标志,支持按位操作,默认为0。0x20-微博内容长度超过140字则报错0-以上错误做容错处理,即发表普通微博不是必填mCallBack-回调函数mTargetClass-返回对象类,如果返回json则为nullresultType-BaseVO.TYPE_BEAN=0BaseVO.TYPE_LIST=1BaseVO.TYPE_OBJECT=2BaseVO.TYPE_BEAN_LIST=3BaseVO.TYPE_JSON=4在所有参数中,虽然也有好多难理解的参数,但是,通过我的实验,那些参数暂时不影响我们的程序效果,但是有一个很重要的参数却是我们不得不了解的,那就是mCallBack,我们需要实例化这个对象,然后调用这个类中的方法。我将mCallBack作如下实现。mCallBack=newHttpCallback(){ @Override publicvoidonResult(Objectobject){ ModelResultresult=(ModelResult)object; if(result!=null&&result.isSuccess()){ try{ JSONObjectdataObj=newJSONObject(result.getObj().toString()); if("ok".equals(dataObj.getString("msg"))){ Toast.makeText(AddWeiboActivity.this,"发送成功",Toast.LENGTH_SHORT).show(); } }catch(JSONExceptione){ e.printStackTrace(); } }else{ Toast.makeText(AddWeiboActivity.this, "调用失败",Toast.LENGTH_SHORT).show(); } }};4.4浏览微博内容模块(包括转发和评论俩个功能)“转发”和“评论”功能也是微博应用程序中很重要的而且必须有的功能,但是主流微博对它们功能的定义却不很一致,有的微博中没有“转发”功能,而用当下流行的点赞替代,还有“转发”功能可以加入评论的等等,我经过多方面体验,对比和思考以及自己所掌握的知识的综合考量,最终设计出图4-5所示的界面。上方是一个灰色的背景,放置好友的头像,名称,右边有一个明显的跳转标识按钮,但是考虑到用户的使用体验,我不光给跳转按钮添加点击跳转事件,也给整个灰色背景添加了一个点击事件,不管是习惯点头像跳转的用户还是点按钮跳转的用户都可以达到自己的预期。界面下方是转播、对话、点评功能。图4-5浏览微博内容点击主界面的好友发布的微博内容会跳转到浏览微博内容模块,界面中可以看到好友的基本信息和微博的详情,界面的上方是好友头像,昵称,点击上方的部分会跳转到好友的详细信息页,在界面下方可以对本微博进行转播、评论,也可以给好友发送私信,“转播”功能实现把好友的微博信息复制发送给自己的好友的功能。“对话”功能实现与好友私下聊天而不作为一条微博发送给各自的好友。“点评”功能实现对好友发布的微博进行评论的功能。图4-6所示是点击转播的界面,可以看到界面效果与“发布微博”功能界面几乎相似,是的,它们是同一个界面,在加入一部分判断条件实现的,点击对话按钮和点评按钮也会弹出相应的界面,他们的界面和发布微博的功能界面收是相似的,在这里我就不再进行截图,只进行文字说明。图4-6转发微博一个完整的android程序,layout布局文件会占编程相当一部分工作量,而布局的美观也大大的影响着程序的整体效果。好的布局不但会给人耳目一新的感觉,使用户爱不释手,而且还能给用户以明显的提示效果,引导用户更流畅的操作程序。下面的这段代码是浏览微博内容上部分内容的布局文件。上部分内容布局文件,布局方式采用相对布局,这样布局的好处是可以不用太在意屏幕的尺寸大小,控件的位置会根据它的相对位置而改变,好友的头像使用imageview控件,两个textview分别imageview的右方,一上一下,上边是好友的昵称,下边是好友的微博地址,最右边是跳转button,所有的控件都有id属性,可以根据id值取到他们对应的控件,进行相应的操作。<RelativeLayout android:id="@+id/show_top" android:paddingTop="5.0dip" android:layout_width="fill_parent" android:layout_height="60.0dip" android:background="#c7cbd6" android:layout_alignParentTop="true" android:layout_centerHorizontal="true"> <ImageView android:id="@+id/show_headicon" android:layout_marginLeft="8.0dip" android:layout_width="45.0dip" android:layout_height="45.0dip" android:layout_alignParentLeft="true"/> <TextView android:id="@+id/show_nick" android:layout_marginLeft="5.0dip" android:layout_width="wrap_content" android:layout_toRightOf="@id/show_headicon" android:textColor="#384050" android:layout_height="wrap_content"/> <TextView android:id="@+id/show_email" android:layout_width="wrap_content" android:layout_marginLeft="10.0dip" android:layout_toRightOf="@id/show_headicon" android:textColor="#687888" android:layout_height="wrap_content" android:layout_below="@id/show_nick"/> <Button android:id="@+id/to_userinfo_btn" android:layout_width="wrap_content" android:background="@drawable/arrow_more_info_selector" android:layout_height="wrap_content" android:layout_alignParentRight="true"/> </RelativeLayout>4.5查看用户信息模块(包含查看好友资料和详情)功能模块化的根据是,如果一个问题有多个问题组合而成,那么这个组合问题的复杂程度将大于分别考虑这个问题时的复杂程度之和。这个结论使得人们乐于利用功能模块化方法将复杂的问题分解成许多容易解决的局部问题。功能模块化方法并不等于无限制地分割软件,因为随着功能模块的增多,虽然开发单个功能模块的工作量减少了,但是设计功能模块间接口所需的工作量也将增加,而且会出现意想不到的软件缺陷。因此,只有选择合适的功能模块数目才会使整个系统的开发成本最小[9]。在设计了以上所有功能后,还有那些功能是我的微博客户端想要的呢?从我个人的角度,我想要了解好友的更多的信息,于是我又设计了查看用户信息模块。因为我们的微博客户端致力于简洁,我们不光在功能上在浏览微博的部分会跳转到好友的详细信息页,页面中显示好友的昵称,广播数,听众和收听数,性别、籍贯和最近微博。好友详细信息界面包括好友头像、好友昵称、好友所发广播总数、听众数、收听数、好友的性别、所在地等基本详细信息。好友详细信息界面如图4-7所示。图4-7好友详细信息好友所有广播界面是一个列表界面,列表的每一项包含头像、昵称、发布微博时间、发布微博内容。好友全部微博界面如图4-8所示。图4-8好友的全部微博好友的收听界面是一个列表界面,每一列包含用户的头像、用户昵称、用户微博地址。在我的收听左右俩边,分别有刷新和发布微博俩个按钮,点击左边的刷新按钮,可以刷新好友列表,点击发布微博按钮可以发布微博。好友收听列表如图4-9所示。图4-9好友的收听列表好友的听众界面是一个列表界面,每一列包含用户的头像、用户昵称、用户微博地址。在我的听众左右俩边,分别有刷新和发布微博俩个按钮,点击左边的刷新按钮,可以刷新好友列表,点击发布微博按钮可以发布微博。好友听众列表如图4-10所示。图4-10好友的听众列表2)实现代码classGridAdapterextendsBaseAdapter{ privateContextcontext; privateLayoutInflaterinflater; List<String>numList; publicGridAdapter(Contextcontext,List<String>numList){ super(); this.context=context; this.numList=numList; this.inflater=LayoutInflater.from(context); } @Override publicintgetCount(){ returnnumList.size(); } @Override publicObjectgetItem(intposition){ returnnumList.get(position); } @Override publiclonggetItemId(intposition){ returnposition; } @Override publicViewgetView(finalintposition,ViewconvertView,ViewGroupparent){ convertView=inflater.inflate(R.layout.userinfo_grid_item,null); TextViewnum=(TextView)convertView.findViewById(R.id.userinfo_grid_num); TextViewtitle=(TextView)convertView.findViewById(R.id.userinfo_grid_title); ImageViewimage=(ImageView)convertView.findViewById(R.id.userinfo_grid_image); switch(position){ case0: num.setText(numList.get(0)); title.setText("广播"); image.setVisibility(View.VISIBLE); break; case1: num.setText(numList.get(1)); title.setText("听众"); image.setVisibility(View.VISIBLE); break; case2: num.setText(numList.get(2)); title.setText("收听"); break; default: break; } returnconvertView; } }功能模块独立的概念是功能模块化、抽象、信息隐蔽和局部化概念的直接结果。抽象是指对事物、状态或过程之间所存在的某些相似的方面集中和概括起来,而暂时忽略他们之间的差异,即考虑抽象事物的本质特征而暂时不考虑他们的细节。信息隐蔽是指再设计功能模块时使得一个功能模块内所包含的信息(过程或数据),对于不需要这些信息的功能模块来说是不能访问的。信息隐蔽原则对于以后在软件维护期间修改软件时会带来极大的好处,因为大量数据和过程是软件的其他部分所不能觉察的,因而再对某个功能模块修改时就不大会影响到软件的其他部分,所谓局部化是指把一些关系密切的软件元素在物理位置上彼此靠近。功能模块独立性是通过制定具有单一功能并且和其他功能模块没有过多联系的功能模块来实现的。每个功能模块只涉及该软件要求的一个具体子功能,而且与软件结构的其他部分的接口是简单的。比如,五四络科网所运用到的功能模块在一定程度上就克服了传统建站的弊端,可以从根本上建立一个完全独立的网站,具体表现在:五四络科建站所生成的数据库是独立的,也就意味着可以移植到其他服务器平台上,从而解决生成的网站不能迁移的难题;五四络科建站平台可以让生成的网站互不干涉,相互独立,进而提高了系统的安全性;有建站需求的客户往往趋向于个性化,可以在五四络科建站的基础上进行二次开发;在管理上网站也是独立的,管理员可以给网站开通独立的FTP权限,在管理网站时不会影响到其他网站,迁移出去也很方便。功能模块独立性好的软件接口简单,易于编制,独立的功能模块也比较容易测试和维护,限制了功能模块之间由于联系紧密而引起的修改副作用。独立性是保证软件质量的重要因素。5系统的测试与维护5.1测试技术5.1.1白盒测试白盒测试:通过测试来检验系统内部动作是否按照规定正常进行。这种测试方法主要有以下几种方式。1)逻辑覆盖:语句覆盖;判定覆盖;条件覆盖;判定/条件覆盖;条件组合覆盖;点覆盖;边覆盖;路径覆盖。2)控制结构测试:基本路径测试;条件测试;循环测试。5.1.2黑盒测试黑盒测试:黑盒测试也叫功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。5.1.3安全性测试由于系统涉及到个人信息,所以应充分保证信息的安全性,本系统采用实名注册,且不能轻易改变注册人的信息,这样即使手机丢失造成非本人操作的交易,但是由于注册信息未发生改变,将用户的损失降到最低。在一定程度上增强了来自外部因素的安全性。且用户使用必须处于登录状态。结果表明,不登录是无法进行相应的操作的。5.2单元测试测试系统的第一步是测试组成系统的单个构件。测试这些构件称为单元测试。在单元测试过程中,首先检查代码在程序的算法、数据和语法方面有没有缺陷,最后给该构件输入一个测试用例集,以说明该构件是否正确。在单元测试时,主要对单个模块的功能进行测试,不用理会其他的模块的耦合情况。测试一在用户授权配置时,用户名或密码有一项为空或者填写错误,系统是否出现预先设定的操作提示。具体操作:用户名、密码、任意一项为空或者填写有误。结果:都出现相应的错误原因的信息提示。结论:要求用户必须填写正确的用户名和密码,才能授权成功。测试二在发表新微博时,输入空内容,或者和上一条内容一样的微博时,程序是否有出现预先设定的提示。具体操作:输入的内容为空,或者和上一条相同的内容。结果:提示用户内容不能为空,或者请不要输入相同内容。结论:要求输入正确内容。测试三评论微博时,输入评论内容,如果内容为空,程序是否有出现预先设定的内容为空提示。具体操作:输入空的评论内容。结果:显示评论内容不能为空。结论:微博评论功能正常。测试四在通过关键字搜索相关用户时,如果输入空内容,程序是否有出现预先设定的内容为空提示。或者输入的关键字没有搜索到相关的内容,搜索无结果有无提示。具体操作:输入空的搜索内容或者正确的内容。结果:提示请输入关键字,提示输入内容为空或者提示还没有找到相关内容。结论:搜索功能正常。测试五在对某一用户进行关注和取消关注操作的时候,验证是否已经取消了对其的关注,或添加了对用户的关注。具体操作:点击关注按钮和取消按钮。结果:显示关注或者取消状态。结论:添加关注和取消关注功能正常。5.3集成测试单元测试之后,就需要对系统的所有功能进行测试。在此阶段对照用例进行功能测试。此阶段所发现的往往是概要设计的错误并将各个模块继承起来进行结合测试。继承测试分为两种:一次性组装方式和增殖式组装。即把经单元测试后的模块一次性的组装成系统进行测试,增殖式组装方式即在模块组装的过程中,边组装边测试,每增加一个或几个模块就测试一次,最后组装成最后的系统。结论如今软件开发是一个有明确分工的工作,根据软件工程的理论,在开发过程中不同的人会负责不同的模块开发,比如有专门的人负责业务逻辑,有专门的人负责图形界面,所以现在的开发人员都是某一方面的专家。在本系统中图形界面虽然简单,但并不是十分的友好,从美观的角度来说也还是很不够的,这样的界面是不能应用到实践中的。在论文的写作过程中,不仅参考了大量的书籍,而且还有老师指导和帮助,这给论文的编写奠定了良好的理论基础,并且自己亲身体验了腾讯的微博系统后台,给本人开发系统及编写论文提供了良好的素材。经过几个月的努力工作,基于Android的微博客户端终于完成了。基于本身android的知识以及对android的浓厚兴趣,一直摸索着运用了很多比较高级的技术完成了这个软件。在这个过程中,我学会了很多知识,比如Android环境的搭建、Intent、Activity、Services、ContentProvider、SQLite等,但我学会的最重要的一点是,利用现有的资源去想办法分析问题、解决问题。可以在书中和网络上查找解决问题的办法和知识,然后先把所遇到的问题从整个程序中剥离,根据所查到的知识试编写一个demo测试这样做是否可以解决问题,如果可以,再把相应的解决思路和代码运用到项目上。这样做会使项目出错的几率降低,如果不清楚这个解决方案是否可行而直接运用到项目中,一旦如此的解决方案没有达到预期的效果,或者由于加入这段代码而使应用程序报错,之后程序的工作量和工作难度都会成倍的加大。虽然,这个软件目前运行良好,但是代码的健壮性还很差,在整个工程的构思方面也不足,用户操作界面还是不够灵活友好,这些问题还需要今后逐一解决。还有,这个软件还可以进一步扩展,例如:微博广场、私信、推荐好友等,使功能更加强大,带给用户更好的体验与便捷。通过本系统的开发,使我对所学的知识和理论有了更深一层的了解,也使我学会了如何利用所学的知识来进行实际的开发,在代码编写的前期,必须要对所要做的软件系统进行全面透彻的分析,对系统的需求一定要非常的明确,知道我们要做什么,把所要做的功能都列出来,然后去分析他们之间可能有的内在的联系,分析清楚之后就需要确定这些功能需要怎么样实现,当然现在只是在做系统的概要设计,把系统的模块,用例图,工作的流程图进行进一步的分析确定,这时候我们就知道要做什么以及怎样做,接下来就可以尝试进行系统的详细设计以及开始编码工作了,但是现在的阶段还不是可以完全可以进行编码的时候,现阶段要做的工作主要是对整个程序的结构进行设计,我们知道系统大概要怎么做之后一定要做编码部分的设计,一个号的代码结构可以帮助我们更加清晰的分析问题和实现功能,详细设计的阶段就是对功能模块进行详细的分析与设计,使之更加容易实现,而且在修改或添加功能的时候不用改动太多的东西便可以放便的做到。在代码编写时我们要编写的条理清晰,如果有共用的代码块我们要把它封装,在自己的认知上尽量使用面向对象编程的思想,使用继承,多态,封装等思想实现,是代码结构高内聚,低耦合,解决问题是更接近日常生活和自然的思考方式,使系统更灵活、更容易扩展和维护。本项目从当前形势下微博系统弊端的提出,开始系统可行性分析,总体的功能模块设计,详细设计,功能模块的实现,就是依据软件工程的基本思想进行开发。通过这次开发,使我进一步掌握了软件工程的思想,以及体会到使用软件工程的思想给开发带来的好处,从而对本专业有了更深刻的认识。以后,我会更加努力的去研究,在熟练android技术的基础上掌握更多的新型技术,来提高自己的开发水平。通过这次毕业设计的任务,使我感到科技的力量与美感。在这次毕业设计的过程中,得到了学校的大力支持,给本人提供了舒适的工作学习环境,也得到了工大老师的精心指导。由于本人第一次完整的设计程序,水平有限,设计中难免有不当之处,还请各位老师给予批评和指正。踉踉跄跄地忙碌了几个月,毕业设计课题也将告一段落。运行程序,也基本达到了预期的效果。虚荣的成就感在没人的时候也总会冒上心头。但由于能力和事件的关系,总是觉得有很多不尽人意的地方,譬如,功能不全、外观粗糙、底层代码不合理...数不胜数。可是,又会有点自恋似的安慰自己:做一件事情,不必过于在乎最终的结果,可贵的是过程中的收获,以此来安抚自己尚未平复的心。参考文献[1]姚尚朗,靳岩.Coogleandroid开发入门与实践[M].人民邮电出版社,2009[2]柯元旦.Android内核剖析[M].电子工业,2011[3]SayedY,Hashimi.ProAndroid[D].Apress,2011[4]EdBurnette.Hello,Android[J].PragmaticBookshelf,2008[5]BruceTate.BitterJava[D].ManningPublications,2002[6]杨丰盛.Android应用开发揭秘[M].机械工业出版社,2010[7]JoshuaBloch,Effective.JavaProgrammingLanguageGuide[D].Addison-WesleyProfessional,2001[8]邓凡平.深入理解android[M].机械工业出版社,2011[9]袁国忠.android应用UI设计模式[M].人民邮电出版社,2013[10]余志龙.王志江.GoogleandroidSDK开发范例大全[M].人民邮电出版社,2010 致谢在论文即将完成之际,本人的心情激动,从开始进入课题到论文的顺利完成,有许多师长、同学、朋友给了本人无言的帮助,虽然大学生活即将匆匆忙忙的过去,但自己却能无悔的说我曾今来过。大学这几年给本人带来的影响却不能用时间来衡量,这几年来,经历过的所有事,所有人,都将是以后生活回味的一部分,是为人处世的指南针。要离开学校,走上工作的岗位了,只是人生历程的又一个起点,在这里祝福大学里跟自己风雨同舟的朋友们,一路走好,未来总会是绚烂缤纷的。请接受我诚挚的谢意!最后还要感谢培养我长大含辛茹苦的父母,谢谢你们!最后,再次对关心、帮助我的闫宇帅老师和王铮老师及同学表示衷心地感谢!外文原文AndroidapplicationsarewrittenintheJavaprogramminglanguage.TheAndroidSDKtoolscompilethecode—alongwithanydataandresourcefiles—intoanAndroidpackage,anarchivefilewithan.apksuffix.Allthecodeinasingle.apkfileisconsideredtobeoneapplicationandisthefilethatAndroid-powereddevicesusetoinstalltheapplication.Anapplicationcanrequestpermissiontoaccessdevicedatasu

温馨提示

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

评论

0/150

提交评论