数据基于Android平台的云相册系统设计与实现.doc

云相册  时间:2021-02-25  阅读:()

基于Android平台的云相册系统设计与实现

摘要 随着云计算技术的不断发展其应用也已延伸到生活的各个领域。作为一种技术手段和实现模式云计算使得计算资源成为向大众提供服务的社会基础设施其目的是实现资源分享与整合。依托云服务的设计思想选用Google提供的GAE云平台结合移动终端上的Android系统分析并设计了云相册系统实现了个人相片的“即拍即存即取”功能。

关键词云计算 Android平台个人相册云相册

中图分类号TP319文献标识码A文章编号文章编号 167278002013

0010007003

作者简介 陈志伟1984-男硕士福建教育学院图书资料与网络管理中心工程师研究方向为计算机应用李天福1983-男硕士福建教育学院教务处助理研究员研究方向为软件开发与应用。

0引言

随着互联网、移动互联网以及物联网技术的迅速发展、应用和普及云计算已经成为新兴技术产业中最热门的领域之一其应用也延伸到生活的各个方面。相对于传统模式云计算模式有着更低的硬件、 网络和管理成本 同时拥有更高的资源利用率。因此 国内外众多的知名公司纷纷推出自己的云计算平台如Google提供的Google App Engine GAE就是一个开发、托管网络应用程序的云平台。

1

本研究将依托云服务的设计思想结合移动终端上的Android系统分析设计并实现个人云相册系统 以满足用户“即拍即存即取”相片、文字数据的需求避免用户在更换移动终端或者信息误删情况下而造成数据丢失并能通过云服务器的无限存储容量、高性能计算能力等优点解决移动终端内存不足问题。

1系统服务端分析与设计

云相册系统服务端主要实现用户相片存储、管理和响应查询浏览功能。

1. 1平台选择

系统服务端选择Google提供的GAE云平台它使用Google的管理数据中心提供多种云服务如网址获取、邮件、 内存缓存、 图片操作等。使用Google云服务的存储、缓存等服务应用程序可以根据访问量和数据存储需要的增长轻松扩展有效地解决当用户数量足够多时服务器负载压力过大、响应慢等问题 同时采用GAE的Blob Store服务使得数据存储在云端这样逻辑上扩大了移动终端的存储空间并能保证在不同的终端都能对云服务器的数据进行访问。

云服务器对客户端提供透明服务客户端无需关注具体技术实现细节。用户只需在Google的GAE页面上注册一个账号 即可创建、添加应用程序。 目前 GAE支持的开发语言有Python、 Java以及Go语言云相册系统将使用Java语言工具。

2

1. 2云相册响应流程

云客户端使用Http协议和云服务器进行交互。 JSP中常用Servlet读取客户端提交的请求数据处理后返回响应结果。模型如图1所示客户端发送http请求到服务器 Web Server接收到这个请求后首先在Web容器中检查是否存在该Servlet实例若不存在则初始化该类然后调用该类的Service  方法最后将处理结果返回客户端。

Web服务器上可以部署多个Servlet程序每一个Servlet程序实现了Java特殊的接口它负责处理对应的一个或者多个URL请求。可以在Web.xml中使用Servletmapping元素将定制的URL与Servlet相关联。Web服务器在加载Web.xml文件后根据配置的Servlet名称加载对应的Servlet类。云相册服务端封装了一个统一的AnywhereServlet类 以及多个响应Action并在Web.xml中配置AnywhereServlet. java以统一接收客户端请求的Servlet

Servicecom. server.AnywhereServer. servlet.AnywhereServlet

Service

/service.do

1. 3云相册数据存储

3

云相册服务器在接受客户端请求后最重要的处理就是保存数据如将客户端发送的相片和文字进行持久化存储。

Bigtable是最直观的GAE存储方法被设计用于处理海量数据。它是一个稀疏的、分布式的、持久化存储的多维度排序映射不支持完整的关系数据模型。相反 Bigtable为用户提供了简单的数据模型利用这个模型客户可以动态控制数据的分布和格式。尽管存在文件大小限制的缺点 即每个文件不超过1MB但是仍然可以使用Bigtable来存储一些账户信息例如注册账户、账号密码等。

当需要存储大数据文件时 例如相片、多媒体文件则需要使用Blobstore存储方式。这是另一个基于的存储方法它最大能够保存和显示2GB的文件。虽然Blobstore不存在数据大小方面的问题但它在使用上还是存在不友好因素 即需要客户端发送两次请求第一次用于获得文件数据存储的URL第二次使用上一次获得的URL发送提交真正的数据。在这点上不仅浪费了用户宝贵的网络资源 同时也消耗了更多的云服务器CPU资源。

在云相册系统中相片数据使用Blobstore方式来存储其它用户数据均使用BigTable方式存储。 2系统Android客户端实现

云相册系统的客户端选用占领智能手机市场半壁江山的Android系统平台。客户端通过网络以及调用接口方式实现与云服务端的数据交互以及系统客户端具体业务逻辑。

4

2. 1Android客户端与云服务器交互

云计算体系中的SOA构建层将云计算服务封装成标准的Web Service使得云计算客户端可以使用浏览器简单便捷地访问并使用这些服务。Android可以像浏览器一样调用Web Service接口实现和云服务端进行数据传输通过标准化的定义服务接口使得构建在系统中的各种服务以统一和通用的方式进行交互也可以直接发送http请求和业务数据。

客户端调用Web Service时数据使用XML格式而直接发送http请求则可以选择使用JSON数据格式。 XML和JSON在可读性上都同样出色。 XML使用自定义标签意义清楚但数据冗余较多提供了对大规模数据的逐步解析方案这种方案比较适合于对大量数据的处理 JSON则因为语法简单所以可读性好解析较少的数据时能起到良好的效果。显然JSON是轻量级的 它易于使用并且容易转换到Java对象。 因此 当数据较少时直接使用http方式发送请求效率更好。

本系统编写了一些工具类利用这些工具类客户端将能够轻松实现用户登录、相片上传等具体业务主要有

1 Task. java。用于创建http请求通过构造JSON数据格式的请求参数设定网络请求方式 即可简单快捷地创建网络请求任务。

2 HttpHelp. java。用于实现3种方式发送http请求有直接get方式、 post方式以及携带文件或者图像数据的post方式。

5

3 Worker. java。在设定回调侦听者之后实现数据后台异步加载并回调服务器返回的后续业务流程。

2. 2注册登录模块

运行客户端之后首先进入登陆界面。若未有登陆账号可以点击“注册”按钮进行注册。注册成功后云服务器将返回用户ID用户使用此ID账号进行系统登录。

客户端发送请求构建登录所需要的JSON参数分别为动作类别

Login、账号以及密码。将JSON格式数据添加到Task的参数中然后执行Worker即可将登录请求发送到云服务器。服务器根据动作类别判定执行用户登录验证流程并返回验证结果。

同时在worker中注册了一个侦听回调函数parseData  解析云服务器返回结果用于判断服务器是否通过本次登录。

2. 3拍照上传模块

登录系统后在主面板上点击“拍照上传”按钮进入客户端拍照上传模块主要实现手机客户端相片数据采集功能然后使用手机网络服务将数据上传到云服务端。

Android拍照可以有两种方式第一种是直接发送命令调用系统拍照功能

6

Intent intent = new Intent MediaStore.ACTION_IMAGE_CAPTUREstartActivityForResult intent 0

在拍照完成后得到相片数据

Bundle extras = data.getExtras  

Bitmap b = Bitmap extras.get "data"

采用这种方式软件稳定无需担心各种系统问题。但因为调用了系统相机界面无法做到界面定制所以用户体验可能会相对差一些。

第二种则是通过继承SufaceView来编写自定义预览界面使用Camera进行数据捕获。本系统采用此种方法在采集页面布局文件中设定预览窗口。在onCreate中取得SurfaceView为一个显示面板并通过显示面板得到其SurfaceView控制器定义MySurfaceCallback类重载控制器的Callback主要用于操作Camera API通过控制Camera调用底层摄像头接口完成预览图片拍摄图片等功能。mSurfaceView =  SurfaceView  findViewById

R. id.mysurfaceviewmSHolder = mSurfaceView.getHolder  mSHolder.addCallback new MySurfaceCallback  

7

mSHolder. setType SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS

在实际应用中用户点击“预览”按钮时系统将打开摄像头进入预览模式 点击“停止”按钮可以停止预览 点击“摄像”按钮进行图像抓捕若不满意图像可以点击“放弃”按钮重新选取画面。 当用户抓拍好相片时 点击“详细”按钮系统弹出相关信息表单填写界面用户可以自由输入。最后 点击“提交”按钮将数据发送云服务器存储代码如下private void submit  

{if mTask.mDataExt == null | | mTask.mUrl. length   < 1

{return

}try

{

JSONObject param = new JSONObject  param.put "action" "PhotoAdd" //上传的动作类别

8

param.put "euid" Login.mEuid param.put "title"mTitle.getText   . toString  param.put "addr" mAddr.getText   . toString  param.put "introduction" mIntroduction.getText   . toString param.put "detail" mDetail.getText   . toString  

//将采集的描述信息添加到json参数中mTask.mType = Task.TYPE_POST_FILE //携带文件的POST方式mTask.mEncode = Task.ENCODING_UTF8mTask.mParam = param

Worker. execute this mTask new Worker.TaskListener  

//使用工具类Worker提交数据

{public void onComplete byte result

{mTask.mDataExt = result

9

青果云(59元/月)香港多线BGP云服务器 1核 1G

青果云香港CN2_GIA主机测评青果云香港多线BGP网络,接入电信CN2 GIA等优质链路,测试IP:45.251.136.1青果网络QG.NET是一家高效多云管理服务商,拥有工信部颁发的全网云计算/CDN/IDC/ISP/IP-VPN等多项资质,是CNNIC/APNIC联盟的成员之一。青果云香港CN2_GIA主机性能分享下面和大家分享下。官方网站:点击进入CPU内存系统盘数据盘宽带ip价格购买地...

inlicloud48元/月,云主机,2核1G/200Mbps,可选安徽/上海联通/广州移动/江门移动NAT

inlicloud怎么样?inlicloud(引力主机)主要产品为国内NAT系列VPS,目前主要有:上海联通NAT(200Mbps带宽)、宿州联通NAT(200Mbps带宽)、广州移动NAT(200Mbps带宽)。根据官方的说法国内的NAT系列VPS不要求备案、不要求实名、对中转要求也不严格,但是,禁止任何形式的回国!安徽nat/上海联通/广州移动/江门移动nat云主机,2核1G/200Mbps仅...

Sharktech云服务器35折年付33美元起,2G内存/40G硬盘/4TB流量/多机房可选

Sharktech又称SK或者鲨鱼机房,是一家主打高防产品的国外商家,成立于2003年,提供的产品包括独立服务器租用、VPS云服务器等,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹等。之前我们经常分享商家提供的独立服务器产品,近期主机商针对云虚拟服务器(CVS)提供优惠码,优惠后XS套餐年付最低仅33.39美元起,支持使用支付宝、PayPal、信用卡等付款方式。下面以XS套餐为例,分享产品配...

云相册为你推荐
站长故事科学家的故事200字拂晓雅阁我对电脑操作不熟悉,想买一本自学的电脑书籍,是电脑入门那一类的,最好还有办公软件应用那一类的快速美白好方法有什么变白的好方法申请证书申请毕业证书网易公开课怎么下载如何下载网易公开课怎么点亮qq空间图标QQ空间图标怎么点亮?宽带接入服务器互联网的接入方式有哪几种?网站营运网站运营都分为哪些方面请客网如何邀请客户吃饭优锁死神之戒链的刀里新人物有哪些
西安虚拟主机 香港服务器租用 台湾服务器租用 希网动态域名 photonvps awardspace 英语简历模板word realvnc 京东云擎 华为云主机 地址大全 日本bb瘦 双11秒杀 adroit 酷番云 便宜空间 国外的代理服务器 免费php空间 国外代理服务器 重庆联通服务器托管 更多