劉 方
(安徽工商職業學院 電子信息系,安徽 合肥 231131)
基于Android的智慧家園綜合服務系統的設計
劉 方
(安徽工商職業學院 電子信息系,安徽 合肥 231131)
根據智慧小區建設的需求,設計和實現了基于Android的智慧家園綜合服務系統。該系統運用Android技術與J2EE架構的整合,采用C/S設計,實現了社區公告、物業報修、物業繳費、快遞收發、家政服務、公交查詢和生活超市等功能。該系統的建立有助于物業公司服務效率的提高,也給居民帶來新的智能生活方式體驗。
智慧社區;Android平臺;J2EE分層結構;JSON;Sqlite 數據庫
隨著城鎮化推進,城市管理模式也在變革中提升。 “智慧社區”理念的提出,為社區治理模式和服務體系的創新,提供了新的思路。 “互聯網+公共服務”的社區管理服務,有助于社區管理的智能化,有助于物業服務效率的提高,有助于“便捷、舒適、安全”社區生活環境的構建,以及居民生活幸福感的獲得。
借助當今移動互聯網的飛速發展,以及個人移動設備在社區居民中的廣泛普及,本文基于Android 技術,實現了一款智慧家園綜合服務系統,有針對性地為小區居民提供社區資訊及各式便民服務,從而為融洽物業管理者、服務者、居住者三者之間關系,改善社區居民生活方式提供了方便。
(一)系統的體系結構
智慧家園綜合服務系統采用Client/Server架構,主要由Web服務器、數據庫服務器、PC 端和移動端組成。系統的物理架構如圖1所示。
服務器端采用J2EE的分層結構。分層體系使得Android 客戶端不需直接與后臺數據庫交互,而只要通過網絡與控制器組件交互,通過JSON數據交換格式,獲取服務器端返回的數據。后臺管理員通過PC管理端發布物業通知、社區新聞,小區活動和家政服務等信息,社區居民則通過客戶端軟件進行瀏覽和操作。系統的體系架構如圖2所示。

圖1 系統應用物理架構

圖2 系統整體體系架構
(二)系統功能結構
智慧家園綜合服務系統以社區管理為基礎, 以服務業主為核心,服務內容涉及各項物業管理和多種便民服務。 (見圖3)
該系統具有以下功能:
1.用戶管理
用戶管理分為用戶登錄和密碼修改兩個子功能。
(1) 用戶登錄:用戶輸入相應的登錄信息(用戶名、密碼),進行系統登錄。用戶的類別有業主和物業管理員。
(2) 密碼修改:用戶用初始密碼登錄系統后,可以在“設置”按鈕中對密碼進行修改操作。輸入原密碼和兩次新密碼,如果原密碼驗證通過,并且兩次新密碼輸入一致,就能成功修改密碼。

圖3 系統的功能結構
2.物業管理
(1)物業通知:發布各種社區公告,及時通知業主,例如停水停電通知、小區新聞動態、溫馨提醒資訊等,由物業公司通過管理后臺發布。客戶端以ListView 列表視圖呈現出各通告或新聞的標題、圖片及簡介,單擊列表中某一項后,可以查看相應詳細信息。
(2)物業報修:業主可以通過在線進行報修,還可以通過拍照的方式把要報修的內容傳到物業中心,讓物業及時地處理。
(3)繳費賬單:可以進行當期物業費、停車費、水電費等查詢、歷史繳費查詢等。支持微信和支付寶在線繳費。
(4)快遞收發:為業主提供快遞收發服務,通過平臺及時發送信息,方便業主下班來取。
(5)投訴建議:可在線對社區信息進行咨詢,提出意見和建議。
3.生活服務
(1)公交查詢:包括公交線路查詢、站點查詢。
(2)家政服務:可查看經過小區物業認證的社區家政服務人員信息;提供新居開荒及家庭保潔服務。
(3)生活超市:為業主提供周邊商家各類超級特惠商品展示,給業主實惠,為商家促銷。
(4)更多服務:提供小區周邊的各類生活服務信息黃頁,(如周邊餐飲外賣、衣物干洗、廢品回收、開鎖換鎖、物流搬家等),方便熱線電話查詢并可一鍵撥號。
(一)客戶端與服務器端數據交互
Android客戶端與服務端之間的數據交換格式,目前較理想的是JSON,它語法簡單,易于解析和生成,且傳輸效率高。
在本系統中,Android與服務器間通信,采用了 HTTP 協議作為通信橋梁。由于網絡請求是比較耗時的操作,為此使用了異步HTTP和JSON相結合的方式來實現數據傳輸。
異步HTTP主要是通過android-async-http來處理對服務器的異步網絡請求的。Http異步請求均在UI(主)線程之外執行,通過回調方式來處理從服務器端返回的數據。
android-async-http是基于Apache的HttpClient基礎上的,一個開源的異步網絡請求處理框架。該框架提供了一個RequestParams類,用于封裝參數處理,具體實現中,數據傳輸的主要流程為:
首先調用getrequestParams方法,把客戶端輸入的信息進行封裝,產生一個鍵-值對形式的RequestParams數組。調用post方法,向服務器端發送異步數據。在服務器端,從HttpServletRequest中獲得客戶端傳來的請求數據;對數據讀取處理后,將需要返回的內容封裝成JSON對象,使用HttpServletRespone發送至客戶端;客戶端接收到返回內容JSON對象,將其解析成所需的數據格式并正確顯示。異步HTTP實現過程如圖4所示。

圖4 異步HTTP交互過程
實現系統前后端數據的交互,JSON作用顯得尤為重要。為了使得Java 對象和 JSON 數據互相轉換的操作更為簡便,本項目中利用了JSON-lib包相關的JSONArray 、JSONObject類來實現。
以用戶(業主)登錄模塊為例,服務端在處理完客戶端數據后,需要將返回內容封裝成JSON對象,方法實現為:創建JSONArray對象,把Owner對象封裝,put()方法在JSONObject對象中放入名為“result”的JSONArray對象。定義makeOwnertoJSON方法,傳入Owner對象,返回JSONObject對象,即實現返回內容的JSON封裝。代碼如下:
private JSONObject makeOwnertoJSON
(Owner o,String type){
JSONObject r = new JSONObject();
if(type.equals("業主")){
JSONArray jsonArray = new
JSONArray();
Owner owner = new Teacher();
owner.setTName(t.getTName());
owner.setTPassword(t.getTPassword());
oOwner.setTId(t.getTId());
jsonArray = JSONArray.fromObject
(owner);
r.put("result", jsonArray);
}
return r;
}
客戶端接收到服務器的返回內容JSON對象,需要將返回內容解析成所需的數據格式,下面對JSON數據的解析調用了getOwnerFromJSON方法。
代碼如下:
//把返回內容解析成Owner對象
private Ownerr getOwnerFromJSON
(JSONObject object){
Owner owner = new Owner ();
if (object != null && !object.equals("")) {
owner.setTName(object.optString("TName"));
owner.setTPassword(object.optString
("TPassword"));
owner.setTId(object.optInt("TId"));
}
return owner;
}
(二)系統數據庫的設計
服務器端采用的數據庫是MySQL。根據系統功能分析,設計了業主用戶信息表、報修記錄表、繳費賬單表、物業通知表、快遞信息表、投訴建議表、家政服務表、商品目錄表、商家電話表等系列數據庫表,用來滿足系統對數據存儲和處理的要求。客戶端采用Android內嵌的Sqlite 數據庫來進行數據的存儲和管理。在本系統的登錄功能模塊實現中,要將己通過服務器端驗證合法的用戶名和密碼存放在客戶端,需建立Sqlite 數據庫進行本地化存取。
實現用戶登錄信息SQLite存儲的過程如下:
首先定義一個名為“db”的SQLiteDatabase對象,使用Android提供的SQLiteDatabase類的靜態方法,打開或創建SQLite數據庫:
db=SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString() + "/ Community user.db3", null);上述代碼即創建了“Community user”SQLite數據庫。
然后通過編寫SQL語句建立 “user_info用戶信息表”。該數據表屬性列為:id (主鍵且自動增加)、user_name(用戶名)、user_password(密碼)、user_type(類別)等字段。
接下來就可以調用SQLiteDatabase對象提供的相關方法,完成對數據庫的操作。
下面是通過添加insertData()方法,實現將已經登錄的用戶信息存入這個表中。
private void insertData(SQLiteDatabase db,String name,String password,String type){
String sql = "insert into user_info values(null,?,?,?)";
db.execSQL(sql, new String []{name,password,type});
}
用戶信息SQLite存儲后,當再次登錄時,由于已將合法的用戶名和密碼存放在客戶端,用戶就可方便地登錄了,而不需要再重新去訪問服務器端,將輸入的用戶信息與服務器數據庫進行匹配驗證了。
(三)手機移動地圖技術
為方便小區居民出行,本系統提供了“公交查詢”模塊。該功能主要是通過調用百度地圖SDK提供的MKSearch類來實現二次開發的。
其實現過程為:在申請獲得使用百度地圖移動版的API Key后,接著在Eclipse中進行地圖SDK的工程配置。為了使用網絡和GPS設備,另需在應用程序的AndroidManifest中添加相應的權限和應用程序的配置信息,并進行全局Application的初始化,然后即可使用百度地圖SDK的功能進行開發了。
具體實現步驟:首先創建MKSearch對象,并初始化MKSearch對象;為搜索按鈕添加事件監聽器,該監聽器用于返回poi(位置、關鍵點)搜索、公交搜索、駕乘路線和步行路線結果。使用poiSearchInCity()方法搜索城市信息,從onGetPoiResult()方法中返回所有poi信息,然后獲取公交線路poi信息。下面是部分關鍵代碼:
public void onGetPoiResult(MKPoiResult arg0,
int arg1, int arg2) {
// TODO Auto-generated method stub
if (arg2 != 0 || arg0 == null) {
Toast.makeText(mContext, "對不起,
沒有相應結果",
Toast.LENGTH_LONG).show();
return;
}
MKPoiInfo curPoiInfo = null;
int totalPoiNum = arg0.getCurrentNumPois();
busLineIDList.clear();
for (int i = 0; i < totalPoiNum; i++) {
if (2 == arg0.getPoi(i).ePoiType) {
curPoiInfo = arg0.getPoi(i);
busLineIDList.add(curPoiInfo.uid);
}
}
if (curPoiInfo == null) {
Toast.makeText(mContext, "對不起,
沒有相應結果",
Toast.LENGTH_LONG).show();
return;
}
mBDMKSearch.busLineSearch ("合肥",
busLineIDList.get(0));
}
接下來,再調用BusLineSearch()方法,根據poi信息來搜索公交路線詳細信息;并使用RouteOverlay在地圖上繪制一條公交詳情路線,最后刷新地圖。
(四)Camera功能的調用和開發
在“物業報修”模塊中,業主可以通過“文字描述”和“現場拍照上傳至服務器”方式,實現在線報修。該功能的實現,涉及Camera功能的開發,以及媒體文件的上傳至網絡服務器。其實現過程解析如下:
1.Camera的使用和開發:首先在AndroidMainfest.xml文件中,申明要使用拍攝功能并取得存儲權限,然后編寫相關代碼:(1)構造一個Camera Intent ,創建一個拍攝照片的Intent;(2)通過執行startActivityForResult()來開啟Camera intent;(3)保存圖片到本地SD卡中;(4)建立一個onActivityResult()方法,接收來自系統Camera程序的執行結果。
2.照片上傳至服務器:(1)首先創建線程來連接服務器,通過處理異步Http請求來實現;其核心方法為: FileUtil.post(requestUrl, params, formfile);其中requestUrl:上傳路徑; params:請求參數; formfile:上傳的文件。(2)把上傳的文件按照 HTTP 協議格式封裝,通過HTTP協議提交數據到服務器: outStream.write(textEntity.toString().getBytes()); (3)執行上傳操作后,接下來在服務器上實現文件流的接收和數據保存;(4)最后在數據庫中添加相應的記錄。

圖5 主頁 圖6 物業通知界面 圖7 快遞代收界面 圖8 生活超市界面
(五)客戶端的界面設計
在“智慧家園”整體布局中,各主要功能界面框架風格基本相似,頂部為 “智慧家園客戶端”項目標題欄,標題欄下是一個“小區景觀圖片的動態展示窗口”。
該“小區圖片動態展示窗口”設計為一個小的長條,放在項目標題之下,它既可以美化軟件界面(或作為廣告植入),也不會影響用戶正常使用系統的功能。
由于系統多個界面都有“小區景觀動態展示窗口“,因此我們將項目標題欄和展示窗口做成了一個公共的布局(title.xml),來供其它布局進行引用。引用該布局很簡單,只要使用
對于“展示窗口”的處理,采取的是將其定義為一個播放控件類AdView,定義出它加載圖片的方法,讓其在固定的時間間隔內不斷地刷新循環顯示圖片,以增加軟件的可看性。
客戶端的部分界面布局效果如圖5~8所示。
本系統設計了基于Android的智慧家園綜合服務系統,借助Android智能終端便攜和強大網絡功能的優勢,為小區居民提供了社區資訊及各種便民服務,有助于物業公司服務效率的提高,給居民帶來新的現代生活方式體驗。該系統在社區建設方面有較好的應用價值。
[1]辜勝阻.智慧城市建設的理論思考與戰略選擇[J].中國人口·資源與環境,2012, (5) :76~80.
[2]李剛. 瘋狂Android講義[M].北京:電子工業出版社,2011.
[3]馮艷紅,何加銘,楊任爾,等.基于Android技術的社區服務系統設計[J].移動通信,2015,(5): 90~93.
[4]王衛紅.Android應用開發基礎教程[M].北京:機械工業出版社,2015.
[5]阮昆,王勉.基于Android 的高校招生就業工作信息平臺的研究與設計[J].計算機應用與軟件,2015, (9) :219~222.
[6]張愛鳳,鞏秀鋼,王榮,等.基于Android 的智慧小區管理系統[J].電腦知識與技術,2015,(15):69~71.
[7]萬明,李娟娟.基于Android 的社區信息管理系統的設計與實現[J].電腦知識與技術,2014,(3):561~563.
[8]鐘元生.Android開發案例教程[M].北京:清華大學出版社,2015.
2095-4654(2016)12-0075-05
2016-11-04
TP311.52
A