李 涵 崔梓超
基于Android系统的运动场所预定软件
李 涵 崔梓超
本课题在Android系统下设计实现体育场馆预定软件,利用该软件解决人们在运动时遇到的场馆等位问题。利用该软件可以清晰地看到场馆在不同时间段的预订情况,从而可以实际情况选择自己运动的时间段和场馆。该系统分为后台模块、网络模块、图片加载等模块。后台模块是基于Sqlite和Node实现的,充当仓库管理的角色;网络模块是一个基于接口实现的框架;图片加载模块是一个基于LruCache的在线图片加载框架。系统具备用户登录、注册功能、查询场馆信息,在某一时间段预定场馆位置的功能,用户还可以对场馆预定订单进行管理。
目前已经成为主流的Android操作系统,不止深受大众的喜爱,而且也逐渐成为了开发者的首选。主要原因,就是因为Android系统的开源性。在我国,随着城市化的进展,体育场馆越来越多,而人们常为无法在运动时准确地选择有空位的体育馆而烦恼。因此,开发一个场馆预定助手软件就显得十分必要,这可以大大减少人们在运动时消耗在等位上的时间。
本课题基于Android系统,设计实现了一款体育馆运动场地预订软件。通过该软件,用户可以查看已注册的体育馆各类运动场地的使用和预订情况,并能够在手机客户端预订指定时间段的指定运动场地。软件系统具备如下几个模块:
1.用户管理模块:进行用户的注册、登录以及个人信息的管理工作;
2.运动场地查询模块:通过手机客户端,用户可以查询指定体育馆的指定运动场地使用情况和空闲信息,如羽毛球场地、乒乓球场地、篮球场等;
3.用户订单管理模块:通过手机客户端,用户可以查看已经下达的场地预订情况,或进行订单修改、订单取消等管理工作;
4.后台服务器管理模块:用于存放注册用户信息,历史订单信息等。
功能划分
本课题设计的这款场馆预定软件的功能如图1所示。
其中,注册登录功能包括:
(1)用户注册:用户可以通过申请用户名,密码来注册。每个用户名唯一。
(2)用户登录:用户可以根据申请的用户名,密码来登录。
场馆预定功能包括
(1)场馆预定:用户在登录后可以对自己选中的场馆根据所在时间段进行预定。
(2)场馆查询:用户可以在登录后查询体育场馆的时间段位空闲和已经被预定过的时间段。
图1 功能图
图2 系统流程图
系统设计流程
本款APP软件的整个流程如图2所示。
当使用者开启APP之后首先进入到的是登录/注册界面,第一次进入的用户需要注册自己的账号,如果已有账号的用户可以直接登录。登录后可以看到场馆信息列表,点击场馆列表中的某一个条目可以进入场馆列表的详细信息并看到该场馆可以预定的时间段,只可以预定未被预定的时间段。可以点击订单管理按钮管理自己预定过的订单列表,点击取消预定即会取消用户所下订单并进入场馆信息列表。
图3 网络请求框架图
关键技术
(1)网络请求设计
本软件的网络请求结构采用异步网络请求框架并进行优化,更加符合本软件中每次页面切换和不同订单详情返回信息时请求量小,通信频繁的网络操作。针对Android 2.3以上的系统才用基于 HttpURLConnection的网络请求,Android 2.3以下系统才用基于 HttpClient 实现的网络请求,使得网络的Android应用程序更容易,最重要的是,速度更快。
整个网络请求框架总体设计如图3所示。
上面是网络架构的总体示意图,整个网络请求Request通过Dispatch分发线程进入请求队列,然后在根据是存放在硬盘/内存调用不同的Data接口实现。此框架具有以下优点:
自动调度网络请求。
多个并发的网络连接。
透明的磁盘和内存响应缓存使用标准的HTTP缓存一致性。
支持请求优先级。
取消请求的API。您可以取消一个请求,也可以设置请求取消的块或范围。
缓解的定制,例如,用于重试和退避。
强大的排序,可以很容易正确填写您的UI与异步的数据从网络获取。
调试和跟踪工具。
(2)图片加载框架设计
Android手机中加载图片的原理是一个点一个点加载的(分辨率),通常加载这类数据都会在内存中创建一个二维数组,数组中的每一项代表一个点,每一个点又是由ARGB组成,每个色素占4个Byte,所以一张3776 * 2520分辨率的图片加载到内存中需要消耗的内存为:3776 * 2520 * 4byte = 38062080Byte。由此算来,大约需要38Mb内存才能加载这张图片,这样大的内存空间对移动设备来说非常容易造成内存溢出异常(oom)。而且对于移动设备而言,哪怕加载能成功那么大的内存也是一种浪费(屏幕分辨率限制)。
图4 图片加载框架
所以Android系统本身给我们预留了一个位图加载的信息类BitmapFactory.Options对象,BitmapFactory. Options为BitmapFactory的一个内部类,它主要用于设定与存储BitmapFactory加载图片的一些信息。根据屏幕尺寸或者规定尺寸压缩像素点使图片从而避免像素数组全部加载到内存中,防止内存溢出,有效利用内存空间。本系统将其封装为一个整体框架,并为其专门划分一个HttpStack用来请求网络。图片加载框架总体设计如图4所示。
上面的结构中,ImageLoader是所有方法的封装类,可以通过初始化调用方法,整个库分为ImageLoaderEngine,Cache及ImageDownloader,ImageDecoder,BitmapDisplayer,BitmapProcessor五大模块,其中Cache分为MemoryCache和DiskCache两部分。ImageLoader收到加载及显示图片的任务,并将它交给ImageLoaderEngine,ImageLoaderEngine分发任务到具体线程池去执行,任务通过Cache及ImageDownloader获取图片,中间可能经过BitmapProcessor和ImageDecoder处理,最终转换为Bitmap交给BitmapDisplayer在ImageAware中显示。整个函数流程如图5所示。
软件运行后,首先进入用户登录界面。登录界面有2个文本输入框,输入正确用户名后方可登录,否则提示:用户名或密码错误,请重新输入。如图6。
图6 登录界面
图7 场馆展示列表界面
图8 场馆详情界面
图9 场馆预定列表界面
图10 历史订单详情界面
图5 DisplayBitmapTask流程图
登录成功后,进入场馆展示列表页面,这里放置了对应展示场馆信息和所在地,点击图片会以圆形慢慢扩散、底部缓缓弹出详情页面。场馆详情页面的上部是场馆的图片,下面是场馆的介绍,然后有一个浮动按钮,点击之后会进入这个场馆的预定页面。如图7和图8所示。
在场馆预定列表界面中会显示出场馆的不同预定时间段,点击之后如果下单成功会提示“下单成功”,如果失败会根据失败原因提示,如:“该时间段已被预定”或“该时间段不营业”。 如图9所示。
在历史订单详情页中,可以查看用户所有下单成功的页面。长按,则过往订单会弹出窗口,询问是否取消订单,如果取消订单,则会提示“取消成功”。并返回上一级页面。如图10所示。
本课题在Android系统上设计实现了一款体育馆运动场地预定软件。通过该软件APP,用户可以查看已注册的体育馆各类运动场地的使用和预定情况,并能够在手机客户端查看已经下达的场地预定情况,或进行订单修改、订单取消等管理工作。通过该软件的使用,可以减少人们在运动时消耗在等位上的时间,方便用户使用。
10.3969/j.issn.1001-8972.2015.21.019