文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.09.032
中文引用格式: 周靜,周杰,杜景林. 基于Android的參與感知式智慧購物系統(tǒng)的設計[J].電子技術應用,2016,42(9):122-125.
英文引用格式: Zhou Jing,Zhou Jie,Du Jinglin. Design of intelligent shopping system in the mode of participatory sensing based on Android[J].Application of Electronic Technique,2016,42(9):122-125.
0 引言
以智能手機為典型代表的移動設備普遍搭載了各種各樣的傳感器,為人們提供所需要的服務[1]。智能移動設備的強大功能催生了一種以人為主體的感知方式——參與式感知。在進行感知時,由個體或群體使用其所擁有的功能日益強大的移動設備及云端服務器來收集并分析語義信息[2]。
感知應用涉及到各種領域,比如:醫(yī)療保健、社會網(wǎng)絡應用、交通路線導航等。Ear-Phone[3]、Common Sense Project[4]和Petrol Watch[5]分別利用感知數(shù)據(jù)提供了環(huán)境監(jiān)測和日常智慧消費服務。
本設計提出的智慧購物系統(tǒng)估測特定商場特定時間段每位顧客的排隊時間,并提供實時查詢和推送訂閱服務,為用戶購物決策提供參考。
1 智慧購物系統(tǒng)的總體架構設計
1.1 核心問題分析
在參與感知模式中,如果參與者過少,感知數(shù)據(jù)不足,會嚴重影響感知結果的準確性。針對此問題,實驗小組對商場結賬排隊模式進行了研究,研究表明,在一個動態(tài)時間塊內(nèi)完成排隊過程的顧客,他們的等待時間幾乎是相同的,這說明,在特定時間塊內(nèi),即使僅有少數(shù)顧客上傳數(shù)據(jù)到服務器,也能得出高準確度的結果值。
1.2 系統(tǒng)總體結構
系統(tǒng)結構如圖1所示,客戶端主要功能是搜集數(shù)據(jù)、對數(shù)據(jù)進行預處理、上傳數(shù)據(jù)、與用戶視圖交互等;服務器端的主要功能是接收從客戶端發(fā)送來的數(shù)據(jù),對數(shù)據(jù)進行清洗、分類、聚合等操作,最終整合出平均排隊時間;極光推送服務器為系統(tǒng)提供實時推送功能。
1.3 客戶端結構
客戶端軟件結構框架如圖2所示。
服務控制模塊為用戶提供登錄、配置功能,并且為系統(tǒng)計算結果地圖可視化和曲線圖展示提供相對應的軟件接口。
感知模塊利用傳感器技術實現(xiàn)加速度數(shù)據(jù)、音頻數(shù)據(jù)等的實時采集,保存至本地數(shù)據(jù)庫,為數(shù)據(jù)處理模塊提供數(shù)據(jù)儲備。
信息收發(fā)模塊充當著信差的角色,感知主體將數(shù)據(jù)實時上傳到服務器,服務器運用大數(shù)據(jù)的數(shù)據(jù)挖掘等算法模型對數(shù)據(jù)進行處理,然后將處理結果實時發(fā)送到客戶端。
推送接收模塊接收服務器推送的實時通知,為節(jié)約開發(fā)成本,提高工作效率,系統(tǒng)引入第三方極光推送服務。
數(shù)據(jù)處理模塊是整個客戶端軟件架構的核心,主要包括排隊模式識別和排隊時間計算。首先將感知數(shù)據(jù)與本地數(shù)據(jù)庫中的排隊模式識別密鑰相對比,篩選出符合排隊模式特性的數(shù)據(jù),采用二進制序列塊算法模型,計算結賬排隊時間,利用網(wǎng)絡通信技術上傳到服務器。
排隊模式識別:系統(tǒng)主要通過分析加速度和音頻數(shù)據(jù)進行排隊模式識別。顧客的運動狀態(tài)可分為移動和站立兩種,以4 Hz的采樣率收集加速度樣本,每一個樣本表示成三維矢量,分析當前樣本和鄰近樣本的矢量夾角,判斷當前樣本表示的狀態(tài)。通過大量的實驗得出結論:將5°作為夾角閾值判斷樣本代表的運動狀態(tài),其結果精確度最高。即如果系統(tǒng)中樣本矢量與鄰近矢量的夾角超過5°,則視為移動狀態(tài);低于5°,則視為站立狀態(tài)。假設一位顧客在[Ti,To]時間段內(nèi)處于排隊模式,那么在Ti之前和To之后的一小段時間內(nèi)處于走或者跑的狀態(tài),將這一小段時間記為Tc,在[Ti,To]時間段內(nèi)顧客的運動模式又分為向前走動和站立等待兩種,將顧客每次走動的時間記為tm,等待的時間記為tw。多個商場多次試驗表明,tm超過5 s,tw超過300 s的幾率很小,所以系統(tǒng)將Tc的最小值設置為5 s。由于顧客在挑選商品時同樣會出現(xiàn)上述的運動狀態(tài),為避免系統(tǒng)誤判,引入音頻信號分析,結賬時隨著顧客靠近收銀員,掃碼計價器的聲音會增強,將麥克風搜集的音頻數(shù)據(jù)同本地數(shù)據(jù)庫已存在的音頻數(shù)據(jù)進行MFCC特性對比,即能精確地識別出用戶是否處于排隊模式。tm、tw、Tc,音頻識別標志,加速度矢量夾角閾值共同組成排隊模式的識別密鑰。
排隊時間計算:系統(tǒng)采用二進制序列塊算法模型計算排隊時間。以二進制0和1分別表示排隊過程中短暫的站立和走動,由于tm最大值為5 s,tw最大值為300 s,所以可以用0-序列塊代表站立,1-序列塊代表走動,如果用序列塊中二進制數(shù)的個數(shù)代表序列塊的長度,那么排隊模式中0-序列塊的長度最長為1 200,1-序列塊的長度最長為20。如圖3所示,0,1序列組中,[0,a]時間段的1-序列塊表示走動狀態(tài),[a,b]時間段的0-序列塊表示站立狀態(tài),長度較小的序列塊(如圖中c,d,e)代表噪聲,將這些噪聲序列塊剔除,就得到對應顧客的排隊時間序列組。計算該序列組的長度,結合采樣率,即可計算出結賬排隊時間。
視圖交互模塊為應用提供視圖接口,為系統(tǒng)和用戶提供界面交互服務。
1.4 服務器端結構
服務器端結構如圖4所示。存儲模塊主要維護著系統(tǒng)數(shù)據(jù)庫。數(shù)據(jù)處理模塊用來處理數(shù)據(jù),首先數(shù)據(jù)收發(fā)模塊按照指定的格式解析由客戶端通過網(wǎng)關發(fā)送來的數(shù)據(jù)包,存儲在緩存數(shù)據(jù)庫,使用數(shù)據(jù)挖掘技術中的聚類算法模型將緩存數(shù)據(jù)庫中具有相同地理標簽、同一個時間塊內(nèi)的數(shù)據(jù)包整合為一類。清洗模塊運用剔除算法模型清洗掉特定類中無效的數(shù)據(jù)包。計算模塊將特定類中有效的數(shù)據(jù)進行融合。過濾模塊啟用下行通信模塊,調用極光推送遠程API,將融合結果值自動推送到特定的客戶端。上行通信模塊通過3G、WiFi網(wǎng)關或者其他Internet接入方式與客戶端進行Web-Socket實時通信。
傳感器技術、通信網(wǎng)絡技術和計算機技術,分別承擔對信息的獲取、傳輸和處理應用[6]。
剔除算法原理如下文所述。
將某一特定類表示成:
重新回到式(1)進行驗證,直到滿足S<M,完成清洗操作。
2 關鍵技術介紹
2.1 Web-Socket實時通信
Web-Socket是基于HTML5規(guī)范的一種新的協(xié)議,實現(xiàn)了瀏覽器與服務器的全雙工通信。
在Android客戶端,系統(tǒng)借助開源Android網(wǎng)絡類庫Autobahn Android[7],建立與Web-Socket服務器的實時通信,具體的通信流程如圖5所示。
Android客戶端將相關數(shù)據(jù)包實時傳送給Web-Socket服務器,經(jīng)過數(shù)據(jù)處理模塊處理后通過WiFi或3G網(wǎng)關將結果值發(fā)送到Android客戶端,在地圖服務界面和曲線趨勢圖中即時更新。
2.2 極光推送技術
推送(push)是一種由服務器端主動向客戶端推動消息的技術[8]。設計借助第三方極光推送服務進行估測時間的實時推送。具體流程如圖6所示。
Jpush SDK以jar的方式集成于Android客戶端,該jar文件為客戶端極光推送初始化、TCP長連接等機制提供服務。當過濾模塊監(jiān)測到估算時間滿足用戶需求,推送服務模塊調用Jpush遠程API將要發(fā)送的數(shù)據(jù)通過JPush服務器發(fā)送給特定客戶端,Jpush SDK解析定制數(shù)據(jù),并發(fā)送Notification提醒。
2.3 隱私保護、激勵策略、安全機制和數(shù)據(jù)有效性
參與感知系統(tǒng)存在如圖7所示的4種挑戰(zhàn)。隱私泄露會給用戶帶來參與風險,若參與的用戶過少,則可用數(shù)據(jù)缺乏,系統(tǒng)估測結果的正確性和實時性將大打折扣,安全機制用來保證數(shù)據(jù)在傳輸、處理和存儲過程中的安全,所以隱私保護、激勵策略和安全機制是不容忽視的環(huán)節(jié),是后續(xù)研究的重點。數(shù)據(jù)有效性驗證為服務器處理結果的精確度和可參考性提供保障。
3 原型實驗
實現(xiàn)基于Android的智慧購物系統(tǒng),硬件上需要通信設施,軟件上需要一個服務器用來處理數(shù)據(jù),若干Android客戶端用來收集數(shù)據(jù)、預處理數(shù)據(jù)、上傳數(shù)據(jù)、展示估測結果。
實驗小組由10位成員組成,每位成員攜帶一部安裝了智慧購物系統(tǒng)的Android智能手機,在一家大型商場進行試驗,6人模擬排隊結賬,2人模擬貨物架挑選商品,2人作為查詢用戶,驗證系統(tǒng)計算結果的準確性。實驗人員在同一個時間塊內(nèi)完成整個排隊結賬過程。試驗選擇在周六的3個時間塊內(nèi)的3組實驗,總結見表1。
分析表1可知,由于受噪聲干擾,排隊時間越短,誤差越大。
部分界面展示如圖8所示。
圖8(a)為個人設置界面。若系統(tǒng)監(jiān)測到特定時間塊的排隊結賬時間滿足用戶設置需求,將發(fā)送Notification提醒,如圖8(b)所示。圖8(c)為排隊時間曲線圖,系統(tǒng)提供自當日起一周內(nèi)的歷史查詢,以每個時間塊的計算時間為坐標點描圖。圖8(d)為地圖可視化界面,系統(tǒng)采用第三方地圖服務,用戶可以清晰地查看商場的位置(圖中紅色氣泡標記),點擊紅色氣泡標記,會以對話框的方式顯示對應的商場名稱及坐標,同時彈出下面的消息框,將實時計算結果形象地展示給用戶。
4 總結
本文提出了一種C/S架構的基于Android的參與感知式智慧購物系統(tǒng),運用相關算法模型,分析客戶端移動設備搜集的感知數(shù)據(jù),進行預估算,服務器端接收客戶端預估值,利用數(shù)據(jù)挖掘算法模型處理整合,得出最終結果值,為用戶提供實時查詢和推送服務。系統(tǒng)收集數(shù)據(jù)僅僅使用智能手機內(nèi)置傳感器,不需要外部傳感設備,并且采用參與感知的模式,參與者為普通民眾,所以成本極低,結構簡單;另一方面,借助于智能手機越來越強大的計算能力,數(shù)據(jù)的預處理在客戶端完成,參與者僅僅將預估算結果上傳到服務器,緩解了寬帶擁擠,設計可以廣泛運用在一些排隊場所,用于進行類似的排隊時間估算,具有廣闊的應用前景。但是,設計在激勵參與者機制、保護用戶隱私、客戶端資源優(yōu)化等方面還缺乏有效的措施,需要進一步探索。另外系統(tǒng)僅僅局限于Android平臺,改進系統(tǒng)架構,實現(xiàn)更廣泛的跨平臺應用是后續(xù)研究的又一重點。
參考文獻
[1] 熊英,史殿習,丁博,等.移動群體感知技術研究[J].計算機科學,2014,41(4):1-8.
[2] ESTRIN D.Participatory sensing:applications and architecture[Internet Predictions][J].Internet Computing,IEEE,2010,14(1):12-42.
[3] RANA R K,CHOU C T,KANHERE S S,et al.EarPhone:An end-to-end participatory urban noise mapping system[C].IPSN′10.New York,2010:105-116.
[4] DUTTA P,AOKI P M,KUMAR N,et al.Common sense:participatory urban sensing using a network of handheld air quality monitors[C].SenSys′ 09.New York,2009:349-350.
[5] DONG Y F,KANHERE S,CHOU C T,et al.Automatic collection of fuel prices from a network of mobile cameras[C].4th IEEE International Conference.Greece,2008:140-156.
[6] 何欣,宋亞林,安健,等.移動感知物聯(lián)網(wǎng)技術研究[J].計算機應用研究,2011,28(7):2407-2410,2417.
[7] GOEDDE A.Autobahn Android[EB/OL].(2015-10-25)[2015-11-10].https://github.com/crossbario/autobahn-android/commit.
[8] 王克峰.基于Android的信息推送管理系統(tǒng)的設計和實現(xiàn)[D].大連:大連理工大學,2012.