1006大设计翻译版_第1页
1006大设计翻译版_第2页
1006大设计翻译版_第3页
1006大设计翻译版_第4页
1006大设计翻译版_第5页
免费预览已结束,剩余45页可下载查看

付费下载

下载本文档

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

文档简介

本人作者:王莹时间:20146Thedesignandimplementationofthefriendship-basedbarterprogramonthebaseofBaaSandAndroidAuthor:WANGYingTutor:GEShengAstimegoesby,everyonewillhavethingsbeingsetaside.Suchasbooks,toysanddailysthatwewon’tuseanymore,howtodealwiththem eaproblem.Wefeelitpitytothrowthemaway,butsettingthemasidewilltakealargeplace.Tosellthemassecondhandthingstakesnotonlytimebutalsoenergy.Weshouldn’tforgetthefactthatweallhaveourowncircleoffriends,maybethethingswithnouseforusaretheonesothersinneed,soitmustbeagoodideatogivethethingstoourfriendswhoneedthem.Butnow,thequestionwearefacingisthatwehavenowaytoknowthesemessages.Sowhatwearengisbuildingabridgeforfriendstoobtainmessagesofthesethingsthroughoursoftware.Inthisway,wecanpresentourthingsorsellthematalowpricetoourfriends.Tomeettheseneeds,wedevelopedasoftwaretodealwiththingsbeingsetasidebasingonAndroidandBaaS.Ourmainworksareasfollows:Wehaveconstructedsophisticatedmanagementofusersincludingloginandregistration,addingfriendsandlookinguptheinformationoffriends.Wehavecompletedneatprocedureofpublishingitems.Userscanaddpicturesandwordswhenpublishing,theycsodecidewhowillseetheinformation.Toprovideabetteruserexperience,weusewaterfallstyletoshowother’sitemstoourusers.Also,weprovidethefunctionofclassificationview.Realizingautomaticallyconvertbetweenpresentingtheitemtotheonlywhowanttohaveitandlettingthembidagainsteachotherwhentherearemorethanone.Inthisway,thesystemwillhelpuserstodecidetowhomtheitemwillgive,thiscanavoidusers’secondchoice.Achieveaquicksharingcapability,userscaneasilysharetheitemstheyarebrowsingtotheapplicationorthewechatcircleoffriends.Achieverapidnotificationfeatures,includingfriendrequestsreminder,itemswerephotographedandothernotifications.WehaverealizedthedevelopmentofmobileclientsystemviaAndroid4.0.1system.BaaSprovidedbyAVOSCloudhelpsuscompletetheserver.Wehavefinishedthefunctionwewant,andithaveserviceabilitytosomeextent.Finally,wehavesomeenvisagementaboutfurtherapplicationofthe:mobilenetwork,CircleofFriends,idleitems,bidding绪 研究背 国内外研究现 研究内容与目 组织结 相关技 开放平 本章小 基于Android和Baas易物系统设 系统需求分 系统功能需 系统数据需 系统总体框架设 系统顶层流程设 系统结构模块概要设 系统功能模块详细设 用户模块详细设 浏览模块详细设 竞价模块详细设 评论模块详细设 模块详细设 本章小 基于Android和BaaS易物系统实 系统实现概 与难 云代码功能实 系统功能模块实 用户模块实 发布模块实 浏览模块实 竞价模块实 模块实 通知模块实 系统结果展 本章小 总结与展 工作总 工作展 致 参考文 绪移动互联网(MobileInternet,MI)是一种通过智能移动终端,采用移动无线通信迄今,全球移动用户已超过15亿,互联网用户也已逾7亿。中国移动通信用户总数超58同城、赶集网这样的商业级软件,在这种软件中,二手物品交易只是其中本的研究内容是基于Android和BaaS完成一款内以为主要目的闲置物品处理软件。后端采用BaaS来完成数据的,处理。前端采用瀑布流的方式来Android客户端完美结合。以及查看好友信息等。时,我们采用了的方式。则会跳过模式直接进入竞价模式。在物品详情界面用户可以在物品下面评论,通过上传者的回复来了解;也可以选择将其到自己的应用中或者到的中。当用户想要得到某一件此外,在服务器端,利用AVOSCloud提供的云代码功能,我们可以定期清理数据库第三章基于Android和BaaS易物系统设计相关技Android是谷歌开发的基于Linux平台的开软操作系统。主要用于移动设备,如智能和平板电脑。以Apache开源证的方式,发布了Android的源代图如图2.1所示[2]。图2. 在图2.1中,Android系统架构分为四个层次,从底层到分别为linux内核层、系统运行库层、应用程序架构层和应用程序层。下面分别介绍一下每层的详细信息[5]Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。Android系统的库包括:系统C库,一个从BSD继承来的标准C系统函数库Libc,它是专门为基于Embeddedlinux的设备定制的;,基于Packet OpenCORE,该库支持多种常用的音频、格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4、H.26,、MP3、AAC、AMR、JPG、PNG;SurfaceManager,对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合;LibWebCore,一个的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。组件。隐藏在每个应用后面的是一系列的服务和系统,其中包括丰富而又可扩展的视(Lists,网格(Gridsboxes,按钮(Buttons使得应用程序可以另一个应用程序的数据(如联系人数据库,或者共享它们自己files栏中显示自定义的提示信息。活动管理器(ActivityManager)用来管理应用程序生命Android会同一系列应用程序包一起发布,该应用程序括客户端,SMS短AndroidAndroid的移动应用软AndroidAndroid的运行于,不提供与用户交互的界面;BroadcastReceiver-用户接受广播;ContentProvider-持久化数据,用于在多个应用间共享数据[3]。Android中,Activity是所有程序的根本,所有程序的流程都运Activity之中,Activity可以算是开发者遇到的最频繁,也是Android当中最基本的模块之一。应用程序中所有可见的部分都是Activity。Activity提供了用户接口。Activity由意图启动。当一个意图结束的时候,他们可以目标Service接口中的函数。意图被用来启动和绑定Service。Context.startService:Service会经历onCreate->onStart(如果Service还没有运行,则android先调用onCreate然后调用onStart;如Service已经运行,则只调用onStart所以一个Service的onStart方法可能会重复调用多次StopService的时候直onDestroyStopService的话,Service会一直在运行。该Service的调用者再启动起来后可以通过stopService关闭Service。on.bnSric:veonrte-->onid,nndIind接口实例,IindSre(ContextActivity会和ServceotxtrvieonUbnd-->nDtoyd在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiverBroadcast进行过滤接受并响应的一类组件。可以使事件到来的时候,可以利用BroadcastReceiver进行处理。或者,当一个程序成功完成的时候,仍然可以利用BroadcastReceiver进行处理。BroadcastReceiver通过NotificationManager来通知用户这些事情发生了。BroadcastReceiver既可以在AndroidManifest.xml中,也可以在运行时的代码中使用Context.registerReceiver()进行。只要是了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用ContexdBroadcast将它们自己的IntentBroadcastsContentProvider是Android提供的第应用数据的方案。ContentProvider用上述四种组建中的三种间传递,他们是:Activity,Service,BoradcastReceiver。意图可BaaSBackendasaService,是在移动互联网和云计算的发展过程中出现的一个新的概念,既,PaaS,SaaS后兴起的云服务。SaaS(SoftwareasaService)我们接触最多,网络硬盘即此类服务;(InfrastructureasaService),最出名的就是amazone的AWS了,国内的有阿里云,盛大云。PaaS(PlatformasaService),如的GAE。BaaSBaaS的提供商提供的服务主要集中的掌握任何一门服务器开发语言和框架(java/php等),更无需做大多数开发者不愿做的动应用本身:优化业务,美化UI,改善操作。BaaS是专门为移动应用开发者提供整合的云后端的边界服务。所谓的边界服务主套完整的用户管理服务,但其用户是从各大社交平台而来,所以BaaS会整合各大API并统一提供服务。整合统一其他服务后再提供服务。2、自定义的数据对象和数据服务,这个服可以看作为简化再封装后的数据库服务,现在各大云平台都提供数据库云服务,而BaaS的数据服务是专为移动应用定制的,他平台的地理位置信息和自身的服务整合,如可以提供的地理位置信息轨迹、签到的推送;全文检索等,可以说移动应用需要的后端需求,BaaS都会以服务形式提供。囊这样的热门应用。我们开发的系统将采用AVOSCloud提供的BaaS云服务[7]。或至,第应用借助 本章主要介绍了系统开发过程中所用到的相关技术和理论基础。2.1节介绍了与AndroidAndroid的系统架后及开发方法。2.2BaaS的BaaSAVOSCloud做了一些介绍。2.3节对开放平台做了相关介绍。基于Android和Baas易物系统设本章两章的基础上,从目前市场上常见的二手交易软件的缺陷出发,对该系统的主要任务是基于Android和BaaS为用户提供一个范围内闲置物品发布方式。用户发布的物品信息包括:标题、详细描述信息、实物信息、物品分类还可以对该物品进行相应的操作,包括:出价、、评论等。其他用户就不可以到,如果需要这件物品,则必须通过竞价来获取。通过这样的用户在浏览好友发布的物品时,如果自己不需要也可以将其到自己的子享到自己的中。3.43.5 图,如图3.6所示:3.6技术平台该层次是整个系统的技术基础为模块层的实现提供了基本的API。AVOSCloud为我们提供了数据的与处理功能,其提供的用户和文件管理功能更是为我们应用的开发提供了很大的方便。Android是实现人机交互的关键,其丰富灵活的控件与处理机制,能帮我们开发出拥有友好用户体验的应用。而开放平台对于到的功能的实现又是必不可少。模块:基于技术平台层提供的基本API,模块层实现了系统的功能,用户功能:基于模块层提供的基本服务,该层次完成了系统的顶层流程,并且分别是:用户模块、浏览模块、竞价模块、评论模块、模块。竞价模块:竞价模块是该系统的模块,也是该应用区别于市场上常见的二布一件物品的时候,只有该用户的好友可见。如果其好友将其到他的的同时,也可以到 用户模块的主要功能是,完成用户信息的管理以及处理用户、登录、注销等操所谓用户信息管理,是指处理用户的、登录、注销等操作。用户登录之后,可以修改自己的资料信息。用户信息管理这一部分的工作,是基于AVOSCloud提供的CurrentUserAVOSCloud提供的与用户管理有关的API如表3.1。用户的登录功能流程图如图3.7、图示。 java.lang.Stringpassword,LogInCallback<AVUser>图3.7登录功能流程 图3.8功能流程所谓好友信息管理,是指好友关系的、添加好友等功能。在数据库中建立两张表:PytFolloweePytFollower来分别记录用户关注的人和关注该用户的人,并选择好友。这里,当用户第一次时,会用户的信息到服务器端,通过云人主页。发送好友请求和处理好友请求的流程图分别如图3.9、图3.10所示。图3.9发送好友请求流 图3.10处理好友请求流便可以浏览自己发布的物品。发布物品时,用户可以给该物品添加描述信息,文字品的时候可以选择是否,如果选择可以,则不需要指定。这样当其他用3.3.4节见该物品。发布模块的流程图如图3.11所示。3.11至于涌现出了大批的和应用纷纷使用这种新颖的布局来设计界面。我们用来展示好友发布的物品的主界面将采用瀑布流的方式,受限于屏幕尺寸3.12瀑布流界面中的每一个数据块的要按原图比例缩放,防止出现比例失竞价模块是整个系统中最的模块,负责用户的出价行为,管理用户的出价人免费获取到多个人形成竞价模式的自动转换机制,这也是竞价模块最的功能。用的机制,可以保证一个有序合理的竞价市场。竞价功能的流程图如图3.12所示。3.13信、给好友。应用内是是指用户将其他用户发布的物品给自己的好友,这样可以让自己到到享的是一个向描述该品的网的此我们需要立一个,只需要UL的时候, 保证链的长度不能大于 本章着重介绍了基于Android和BaaS易物系统的设计与实现首先描述了系基于Android和BaaS易物系统实本系统总体实现一个基于Android移动操作系统和BaaS云服务的内闲置物和解决方法。图4.1展示了系统工程文件结构。4.1 的用户。在此同时,如果物品的发布者在发布的时候设定了底价,即不想直接,那用户想要该物品的时候,如果该物品的状态是状态,则该用户可以暂时的到该物品,完成了从模式到竞价模式的自动转换。这一块的实现在4.4.4节详细介绍所谓瀑布流效果,简单说就是宽度相同但是高度不同的一大堆,分成几列,然(一是在用户滑动到底部的时候加载下一组内容的处理。二判断好新的数据块应的数据列中。对于第三点,在进行回收的时候,我们采用Android内置的LruCache算法来回收屏幕之外暂时没有显示的。功能,编写JavaScript代码,并部署到平台上。通过CloudCode,我们可以save请还可以调用部分第库来实现我们的业务逻辑。有时系统会有一些耗时的运算操作,代码的编写。该功能的详细实现将在4.3节介绍。云代码在AVOSCloud中扮演了很重要的角色。通过上一节与难点中对于始项目框架。该框架是基于Node.js中著名的开源webExpress。可能只是简单地展现App的信息并提供AppStore或者Play商店,或者展理用户或者业务数据。这一切都需要我们去创建一个web应用。通过AVOSCloud提供的webhosting功能,我么可以再AVOSCloud中为该Webhosting设置二级域 ,并部署web应用到该之下运行。本文中,我们设置二级 面,我们也可以建立我们的Webhosting来完成与该移动应用程序对应的功能。 public,用于存放webhosting功能的静态资源文件。例如,在public下有个文件叫index.html,那么就可以通过http://${app_dimain} /index.html到这个文件。通常情况下,我们会将资源文件按照类型分存放,比如css文件放在stylesheets下,将文件放在images下,将javascript文件放在js下。Avoscloud同样支持这些的。 我们定义一个”o”函数,返回”oworld”,那么我们就可以用下面的方式来定义: curl-XPOST-H"Content-Type:application/json;charset=utf- -H"X-AVOSCloud-Application-Key: o o半夜清理过期数据,定期向用户发送推送消息等。那么我们就可以通过AVOSCloud的定时这里,AV.Cloud.setInterval接受三个参数name

时,我们利用AVOSCloud提供的signUpInBackground()方法,用户的过AVUseruser=newAVUser(); SignUpCallback(){publicvoiddone(AVException认存在一张_User表,专门用来AVUser对象。当我们实例化AVUser并调用了想对户名进行。AVOSCloudlogInInBackground()方法,用户的登录过程如下:LogInCallBack(){publicvoiddone(AVUseruser,AVExceptione){每次登录之后,AVOSCloud都会在本地缓存一个当前登录用户。我们可以通过便我们的实现。为了避免每次登陆都要重复输入用户名和的麻烦,项目中采用了AndroidSharedPreferences类,每次点击登录的时候,记录下填写的值。每次登陆页面打开的时候,SharedPreferences,如果不为空,则自动填充。用户在登录之后可以通过搜索其他用户,如果找到之后,可以向该用户ABA。我们在数据库中建立了一张PytFriendRequest表来好友请求好友请求的pytFriendRequest.put("request_source",request);pytFriendRequest.put("request_destination",response);request是请求方,response是被请求方AVUser对象。同时系统还会像BB有人请求添加其为好友,提醒其登录应用进库中建立了PytFollowee表和PytFollower表来好友关系。PytFollowee表用来userAFollower.put("follower",userB);userBFollower.put("follower",userA);AVObjectuserBFollowee=newAVObject("PytFollowee");发布模块承担着用户发布闲置物品的功能。我们在系统的数据表中有一张表信息。这里我们规定用户上传物品的不得超过5张。上传时,用户在本地提供的上传文件的方法,将文件上传至AVOSCloud,上传文件的方法如下:AVFileAVFile 其中其中 ocalPaht()方法接受两个参数,第一个参数是为上传的当用户上传多片时,我们为每一个开启一个新的线程,当所有都上传完成时,将所有文件在数据库中的ID存成一个数组,并且作为用户发布物品的属性到PytStatus表的记录中。以,那么需要将switch控件拨向一面,这是输入框将不可用;如果用户选择不,那么需要将switch控件拨向竞价一面,这是用户需要在输入框中输入。pytIndex.put("status",pytStatus);查询索引中“user_id”与自己相同的记录来查找自己可以浏览因为瀑布流需要上下滚动的功能,所以自定义一个AndroidMyScrollView继承ScrollViewScrollView中的部分方法来实现加载数据的功能。因此,我们的父布局采用我们自定义控件MyScrollView。在父布局中采用三个垂直方向的LinearLayout平分整个屏幕。在onTouch方法中每当到手指离开屏幕的事件,就会handlerScrollView的滚动状态进行判断,如果发现已经滚动到了最止过多,程序出现内存溢出异常,我们采用Android内置LruCache和SD卡来进行双缓存。在异步任务中,首先会先检查一下这片是不是已经存在于LruCache中,如果有,则将该返回;如果没存在,则检查SD卡中是否存在,如果存在泽返回改在LruCache和SD卡中。接着将这按照一定的比例进行压缩,并找出当前高度最小的一列,把压缩后的添加进去就可以了。其流程图如图4.3所示。4.2此外,为了保证墙上的都能够合适地被回收,这里还加入了一个可见性检查的方法,即checkVisibility()方法。这个方法的思想就是检查目前墙上的所,判断出哪些是可见的,哪些是不可见。然后将那些不可见的都替换成一张空需要再从LruCache中将这些重新取出即可。如果LruCache中的已经移除,则件。我们用过androidSpinner控件允许用户选择所要查看的分类,这样当用户点击某品的详细信息,包括描述物品的,标题,描述,分类,价格信息等。物品的展AndroidGridViewBaseAdapterGridView异步加载“ 需要指定,假设设定为100元,则发布物品时上述三个字段分别为“竞价“竞价状态”跳过了的环节直接进入了竞价模式,后续的操作过程与前面描述的竞“这里的包括两个方面,一是应用内,而是到。下面将分别讲述其所谓应用内,是指用户其好友发布的物品到自己的应用中,且可以享该用户的物品时,发现“stauts_user”字段和“status_user”字段不同,那么便不 当用户发现该某件物品很有意思是,可以将其到自己的中。到申请APPID是作为调 、 使用API4.3是SDK图4. 上面这展示的是与通信过程中的请求类和响应类。第应用通过他们附带的message字段来携带消息传输给进程。其中BaseReq有个类是ErrCode,它里面定义了几个常量字段,当我们向发送请求后它会作为返回字段返回到我们的应用中来,我们可以根据这个做相应的处理(比如弹个toast来提醒用户的状态第应用就是通过上面不同种类的Message和 图4.5是第应用到 图4. 图4.5第应用 。该对应一个html页面,用来展示的物品。该页面面提到的webhosting中定义。时,的格式为:http: statusId是我们在时传递的参数,该参数是物品的ID,根据该ID的不同,从geObjectge=newwge.wgeUrl=WXMediaMessagemsg=newWXMediaMessage(wge);msg.description=statusObject.getString("status_des");SendMessageToWX.Reqreq=newSendMessageToWX.Req();req.transaction=String.valueOf(System.currentTimeMillis());req.message=msg;当用户A想用户B发送好友请求时,系统会在PytFriendRequest添加一条记录,记AVObjectpytFriendRequest=newAVObject("PytFriendRequest");pytFriendRequest.put("request_source",request);pytFriendRequest.put("request_destination",response);上上述代码中,“request_source”字request_statePytFriendRequest中添加记录的同时,系统还会向被请求好友3天,当用户发布物品的时间超过规定的有效期限AVOSCloud云代码中的定运算得到时间的差值,如果该差值大于物品的有效时间(3天)则将该物品的状态改为转到界面。

浏览物品包括主界面的瀑布流浏览方式。在瀑布流界面中,在水平方向上均4.7在好友管理功能中,首先最重要的添加好友的功能,我们通过用户的来搜他人的好友请求。与好友请求有关的界面如图4.8所示。4.7

4.8发布物品时,需要指定描述物品的,标题,描述文字,分类等信息。发布物品

4.9物品时可以到 的界面如图4.10所示。图4.10 进行了概述描述;4.2节对系统实现过程中所遇到的和难点进行了介绍;4.3节着重介绍了云代码的编写和

温馨提示

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

评论

0/150

提交评论