李 涵 崔梓超
基于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