梁榮鵬++陳世宇++陳正銘++彭玄璋
摘 要:隨著Android智能系統(tǒng)的發(fā)展,APP應用開發(fā)也越來越普及,其開發(fā)技術也愈發(fā)成熟。本文對基于Android平臺的家政應用訂單模塊的設計與開發(fā)進行了梳理。首先對該模塊在整個家政應用中的運行路徑進行了介紹,并展示其中運用到的開發(fā)技術與設計模式;然后詳細分析了該應用訂單模塊的設計思想、開發(fā)步驟與基本原理;最后對該模塊實現(xiàn)的功能進行了總結。該平臺開發(fā)的完成能在一定程度上改善目前家政行業(yè)服務差、信息不透明等弊端。
關鍵詞:Android;家政;訂單;SSM框架;web后端
中圖分類號:TP311.1 文獻標識碼:A
1 引言(Introduction)
改革開放以來,我國的經濟快速增長,高新產業(yè)也不斷發(fā)展,互聯(lián)網與智能移動終端更是成為廣大人民寸步不離的必需品[1]。家政O2O(Online To Offlline)系統(tǒng)能在一定程度上改善目前傳統(tǒng)家政行業(yè)發(fā)展緩慢、各方面不成熟、價格亂、服務差、中介坑人、信息不透明等問題。一般家政O2O系統(tǒng)實現(xiàn)的功能主要有:分角色(服務者、雇主)注冊登錄,查看個人信息,查看附近服務者,查看訂單模塊等。本文主要針對家政O2O系統(tǒng)中實時訂單交互的需求,搭建Android Studio開發(fā)環(huán)境,采用C/S(Client/Server)的架構,結合MVC設計模式,運用Java語言進行該應用訂單模塊的設計與開發(fā)。
2 家政應用與訂單模塊流程介紹(Introduction of
the housekeeping application and its order
module)
2.1 雇主端
雇主通過Android手機雇主端APP登錄認證[2]后,可在程序主界面上查看附近服務者的信息,選擇適合自己的服務者,并執(zhí)行預約;若無相應的服務者,用戶可以點擊立即預約按鈕,讓系統(tǒng)為用戶智能分配服務者。當預約服務者成功時,服務者將會在預約時間內到達用戶指定的地點,啟動服務計時,服務結束時可點擊按鈕停止計時,并進入服務結算界面。此時用戶可以明確地知道本次服務的具體用時與具體計費,當點擊立即支付時可調起時下主流支付渠道來完成支付;支付完成還可以選擇性地給服務者進行相應的評價,系統(tǒng)將根據(jù)用戶的評分對服務者進行綜合評分。
2.2 服務者端
服務者通過Android手機服務者端APP登錄認證后,可以通過下拉刷新操作得到雇主請求預約的訂單列表,服務者可以在該列表中選擇相應的用戶接受預約。當服務者確認接單后,需在預約指定的時間內到達指定的地點;當雇主端啟動計時按鈕時,在服務者端將會彈出提示框提示是否開始計時,若確認則兩端端同步計時,直至服務結束。服務結束,服務者端可以向雇主發(fā)起收款,完成收款即完成該訂單。
2.3 后臺端[3]
超級管理員可通過瀏覽器登錄后臺端,以管理相關訂單。當用戶端發(fā)出預約請求時,后臺端能接收到用戶填寫的預約信息,管理員可以在訂單管理選項中瀏覽和管理所有的用戶訂單,其中包括跟蹤訂單狀態(tài)等功能[4]。
家政應用訂單模塊流程示意圖,如圖1所示。
3 相關技術(Relative technologies)
本系統(tǒng)采用C/S經典架構,Client端選用Android作為操作系統(tǒng),并采用MVC設計模式;Server端選用Java語言進行搭建,并采用SSM框架協(xié)助開發(fā)。
3.1 C/S結構
C/S結構,即客戶機和服務器結構,使用它可以完全利用兩端硬件環(huán)境的優(yōu)勢,將各自的業(yè)務邏輯合理分配到Server端和Client端,從而大大減少系統(tǒng)的通訊開銷。目前市場上主流應用程序系統(tǒng)使用的都是C/S形式的分層結構。
3.2 Android相關開發(fā)技術
3.2.1 Android簡介
Android是一種基于Linux?內核的綜合操作系統(tǒng)。隨著科技的發(fā)展,Android的用處越來越廣,人們對其的使用也越來越普及。谷歌官方推薦的開發(fā)Android應用的軟件是Android Studio 2.3。本應用的開發(fā)也將使用此開發(fā)軟件,并使用其相應的開發(fā)框架。
3.2.2 OKHTTP框架
OKHTTP是Android網絡框架之一,是一個處理網絡請求的輕量級框架。該框架的使用允許每個客戶端的請求都是連接到同一個主機地址,大大提高請求的效率;擁有共享的Socket,使得對服務器的請求次數(shù)減少;建立共享連接池,大大減少請求的延遲;利用緩存響應數(shù)據(jù)來減少重復的網絡請求,在根本上減少對流量的消耗。
3.2.3 極光推送框架[5]
該框架簡單易集成,使開發(fā)者能夠快速部署,從而更專注主營業(yè)務。該框架具有便捷的推送接口集成,同時支持在網站上直接推送,也提供送達統(tǒng)計的API使用;另外,該框架還具有強大的技術優(yōu)勢,客戶端SDK采用自定義的協(xié)議保持長連接,而從根源上大大降低電量與流量的損耗。
3.3 后臺端相關開發(fā)技術
3.3.1 SSM框架簡介
SSM框架[6],是Spring+SpringMVC+MyBatis的縮寫,是繼SSH之后主流的Java EE企業(yè)級框架,對搭建各種企業(yè)級應用系統(tǒng)起到異曲同工之妙。SSM框架是標準的MVC設計模式。它將整個系統(tǒng)劃分為顯示層、Controller層、Service層、DAO層,從而簡化后臺端的設計與開發(fā)。
3.3.2 Ajax技術簡介
Ajax技術是一種無須在全局刷新網頁的情況下,能夠更新局部網頁內容的技術。它的工作原理是瀏覽器通過網絡發(fā)送一個httpRequest到服務器,服務器解析該httpRequest并創(chuàng)建一個Response和發(fā)送瀏覽器請求的數(shù)據(jù)給瀏覽器,瀏覽器通過JavaScript來解析返回的數(shù)據(jù)并刷新頁面內容,完成一個Ajax刷新[7]。endprint
4 訂單模塊開發(fā)(Developing of order module)
訂單模塊的設計與實現(xiàn)思路如下:雇主端與服務者端(統(tǒng)稱Android端)使用Android studio開發(fā)。服務器則利用Tomcat搭建Web容器,用Eclipse作為服務器編程工具,并使用MySql數(shù)據(jù)庫開發(fā)環(huán)境提供數(shù)據(jù)層應用。同時使用了Navicat for MySql對數(shù)據(jù)庫進行可視化操作。最終通過兩端的協(xié)同工作,完成訂單模塊功能。
4.1 Android端設計
Android端采用了MVC的設計思想[8],即視圖層與控制層分開,先分別實現(xiàn)各自的目標,再通過相關操作實現(xiàn)兩者的綁定關系,最終得到統(tǒng)一協(xié)作的可運行系統(tǒng)。
4.1.1 視圖層
在Android的應用開發(fā)中,視圖設計和代碼編寫的工作是分離實現(xiàn)的。開發(fā)者可以首先完成界面的設計再進行下一步的開發(fā)。兩個客戶端的訂單首界面如圖2和圖3所示。
訂單模塊的訂單首界面主要采用了組件ListView,即以列表的形式對內容進行展示。為了能讓App擁有更豐富的功能,在雇主端訂單首界面的ListView中添加了列表頭header。而由于原生的header和ListView中每個Item的界面均為空白,開發(fā)者需根據(jù)具體需求分別設計header和兩個端對應Item的界面。
4.1.2 訂單實體類
在顯示數(shù)據(jù)之前,需要自定義一個類用于保存這些必要數(shù)據(jù)。因此,以雇主端訂單為例,開發(fā)者自定義了RecommendBodyValue類用于作為數(shù)據(jù)存儲的基礎。其中,這個類繼承自BaseModel類,該類實現(xiàn)了將變量進行序列化的操作,以備數(shù)據(jù)傳輸。用戶端訂單實體類代碼如下:
public class RecommandBodyValue extends BaseModel{
public int type; //用戶預約的阿姨服務類型
public String auntname;//阿姨姓名
public String auntlogo;//阿姨頭像
public String address;//服務地址
public String time;//服務時間
public int price;//服務計費
...
}
4.1.3 數(shù)據(jù)綁定控制
由于在界面設計的時候使用到ListView[9],而其原生的Adapter的功能相當有限,為了能讓對應的數(shù)據(jù)顯示在相應的位置上,開發(fā)者自定義了繼承自ListAdapter的orderListAdapter,并編寫了關于綁定數(shù)據(jù)的構造方法,其中的參數(shù)除了當前Activity的上下文,還有就是類型為訂單實體的ArrayList對象,如圖4所示。
當程序執(zhí)行到這個方法的構造函數(shù)時,即完成了數(shù)據(jù)的初始化。除此之外,為了將保存的數(shù)據(jù)顯示在各自的控件上,還在該自定義的orderListAdapter中綁定了要使用到的控件。當要顯示時,通過調用setText()來設置控件的內容,從而顯示到屏幕上。orderListAdapter()方法構造函數(shù)代碼如下:
public orderListAdapter(Context context,ArrayList
mContext=context;
mData=data;
mInflate=LayoutInflater.from(mContext);
mImagerLoader=ImageLoaderUtil.getInstance(mContext);
}
4.1.4 界面綁定控制
開發(fā)者在編寫XML布局文件時,可以為每個組件設置一個唯一標識Id。
(1)當使用者進入訂單模塊首界面時,即開始了一個Activity。在該Activity的onCreate()方法中,使用new ListView()語句來創(chuàng)建一個ListView對象,并通過findViewById()方法尋找布局文件中唯一的Id以實例化該ListView對象。
(2)通過ListView的setAdapter()與自定義的適配器orderListAdapter進行綁定,用以顯示預先設計好的item界面。
(3)通過ListView的addHeaderView()方法與預先設計好的header布局綁定顯示。
4.1.5 網絡請求控制
基于Okhttp在Android應用上的優(yōu)勢,開發(fā)者將其封裝成一個工具類CommonOkHttpClient。該類可以實現(xiàn)get/post請求的發(fā)送[10],并對Response回來的json數(shù)據(jù)進行字符串轉換。此外,開發(fā)者還定義一個請求中心RequestCenter類,并在該類中調用了Okhttp工具類以方便get/post請求的發(fā)送。該類的主要作用是管理一切業(yè)務請求。
以雇主端界面為例,當用戶希望通過下拉刷新其訂單列表時,可在RequestCenter類中定義一個靜態(tài)方法,通過傳參調用向服務器發(fā)送get請求。如果服務器攔截到該請求,則在后臺進行代碼處理,返回相應json數(shù)據(jù)給該方法,并后續(xù)地將json數(shù)據(jù)轉化成相應訂單實體類保存在實例化的參數(shù)中,即完成了一次訂單列表的刷新。
4.1.6 消息推送控制
Android端集成了極光推送框架JPush Android SDK。它以Android Service的形式長期運行在手機后臺而創(chuàng)建并保持長連接,使設備保持永遠在線的能力,以便消息能夠及時推送到手機端。其工作原理圖如圖5所示。
4.2 后臺端設計
4.2.1 數(shù)據(jù)庫設計
家政系統(tǒng)采用了MySql作為存儲數(shù)據(jù)的數(shù)據(jù)庫[11]。開發(fā)者在開啟了數(shù)據(jù)庫服務后,連接數(shù)據(jù)庫,并新建了數(shù)據(jù)庫AuntComing,其中包括了用戶信息表、服務者(阿姨)信息表等數(shù)據(jù)表。對于訂單填寫時所需的信息,開發(fā)者定義了如下字段:訂單Id、用戶Id、阿姨Id、服務時長、服務地址、服務價格、預約時間。其中主鍵為訂單Id,用戶Id與阿姨Id則作為外鍵。當需要使用用戶和阿姨的基本信息時,可通過用戶Id與阿姨Id進行多表復合查詢。訂單信息表的物理模型如圖6所示。
4.2.2 SSM框架組合實現(xiàn)
基于SSM框架開發(fā)的系統(tǒng)結構分層明顯,可簡化開發(fā)流程。家政平臺的后臺端采用SSM框架進行搭建。SSM框架的層次結構具體可以分為view層、model層、DAO層、service層、controller層,各層各屬其職,又相互協(xié)作。
(1)model層為數(shù)據(jù)庫各表的實體類該類的成員變量均為各表的各字段。在本研究對象中,model層則包含了訂單信息類。
(2)DAO層則定義了所有數(shù)據(jù)訪問接口,為數(shù)據(jù)庫查詢作準備。以本研究對象為例,DAO層包含了selectByPrimaryKey(String id)等接口。
(3)service層則定義了與業(yè)務邏輯有關的接口,如查詢所有訂單信息接口List
(4)controller層則是實現(xiàn)數(shù)據(jù)處理與反饋的地方,即在該層,開發(fā)者可以與view層進行綁定,并把相應的數(shù)據(jù)更新顯示到view層上。
各個處理層是否能夠相互協(xié)作,關鍵在于框架中各配置文件是否能夠正確編寫。其中spring-mvc.xml則實現(xiàn)了指定后綴視圖文件的視圖解析[12],自動掃描控制器,注解的啟動等功能;而myBatis.xml則實現(xiàn)了配置數(shù)據(jù)源的功能。另外,其還能自動掃描DAO層中所有接口,讓其與xxxmapping.xml一一對應起來,即可通過編寫數(shù)據(jù)庫操作語句來操作數(shù)據(jù)庫。
5 結論(Conclusion)
以家政平臺中的訂單模塊作為研究對象,先對其執(zhí)行流程作出了介紹,接著介紹了分各端使用到的關鍵技術,最后就各端的設計與實現(xiàn)進行了詳細的介紹。該模塊的實現(xiàn)能基本滿足當前家政行業(yè)的市場需求,方便了雇主與服務者,結合了“互聯(lián)網+”與創(chuàng)新創(chuàng)業(yè),為家政行業(yè)的發(fā)展起到推進作用。
參考文獻(References)
[1] Rattanachai R,Sreekaewin P,Sittichailapa T.Development of Thai rice implantation recommend system based on android operating system[J].Procedia-Social and Behavioral Sciences,2015,197:1048-1052.
[2] Dong C,Liu X.Development of android application for language studies[J].IERI Procedia,2013,4:8-16.
[3] Korkmaz I,Metin S K,Gurek A,et al.A cloud based and android supported scalable home automation system[J].Computers & Electrical Engineering,2015,43:112-128.
[4] 宋恒力.基于Android平臺與Web服務器的課程管理信息系統(tǒng)[J].電子技術,2014(12):59-63.
[5] 黃河清,陳文.Android平臺消息推送服務的實現(xiàn)[J].電腦編程技巧與維護,2014,18:53-55.
[6] 王艷清,陳紅.基于SSM框架的智能web系統(tǒng)研發(fā)設計[J].北京:北京化工大學,2012,12:33.
[7] 盧曉陽.JSON數(shù)據(jù)交換語言在Ajax技術中的應用[J].河南科技,2013(20):23.
[8] 于少波,李新明,劉東.基于B/S和MVC模式的武器裝備體系評估系統(tǒng)設計[J].太赫茲科學與電子信息學報,2015,13(4):
635-640.
[9] 葉斌,李玉榕,陳建國,等.基于Android系統(tǒng)的KOA運動監(jiān)測系統(tǒng)研究[J]. 儀器儀表學報,2014(S2):7-11.
[10] 賈文杰,孫志峰.基于Android平臺的智能導游系統(tǒng)[J].機電工程,2011,28(10):1257-1259.
[11] 吳瓊.基于Android平臺下高校師生作業(yè)答題系統(tǒng)的設計與實現(xiàn)[J].農業(yè)網絡信息,2014(04):129-130.
[12] 廖嘉燦,侯超鈞.基于SSM和HttpClient的在線選課輔助系統(tǒng)的設計與實現(xiàn)[J].計算機與現(xiàn)代化,2016(10):116-120;126.
作者簡介:
梁榮鵬(1996-),男,本科生.研究領域:移動端應用程序研發(fā).
陳世宇(1996-),男,本科生.研究領域:網站開發(fā),微信小程序開發(fā).
陳正銘(1978-),男,碩士,信息系統(tǒng)項目管理師(高級).研究領域:數(shù)據(jù)結構與計算機應用軟件開發(fā).
彭玄璋(1962-),男,本科,講師.研究領域:計算機系統(tǒng)結構,嵌入式系統(tǒng)開發(fā).