趙宇飛+禹東川
摘 要: 研究表明,工作記憶在個體認(rèn)知行為上可起到積極作用。通過工作記憶訓(xùn)練,個體的認(rèn)知績效可以得到有效提高。工作記憶是兒童發(fā)展的重要指標(biāo),因此研發(fā)面向兒童的工作記憶訓(xùn)練系統(tǒng)具有重要意義。隨著移動終端的普及和便捷性,運用Android和HttpClient等技術(shù)設(shè)計一款基于Android平臺的移動終端應(yīng)用,可對兒童進(jìn)行便捷的工作記憶訓(xùn)練,并可對訓(xùn)練過程和數(shù)據(jù)進(jìn)行跟蹤和查詢,為工作記憶訓(xùn)練的運用提供了技術(shù)支持,促進(jìn)工作記憶訓(xùn)練的發(fā)展。通過測試,驗證了該方案的可行性。
關(guān)鍵詞: 工作記憶; 認(rèn)知訓(xùn)練; Android; 系統(tǒng)設(shè)計
中圖分類號: TP311 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2015)10?0045?04
工作記憶是指個體在執(zhí)行認(rèn)知任務(wù)中,對信息暫時保持與操作的能力[1]。工作記憶與很多高級認(rèn)知能力如推理、問題解決和學(xué)習(xí)等密切相關(guān),并為日常生活中的許多重要認(rèn)知活動提供信息加工的空間,因此被認(rèn)為是人類認(rèn)知活動的核心,是進(jìn)行學(xué)習(xí)、推理、問題解決活動以及智力活動的必要成分[2?4]。
近來的研究發(fā)現(xiàn),通過對工作記憶進(jìn)行訓(xùn)練可以提高個體的工作記憶能力[5]。工作記憶成為近年來提升個體認(rèn)知績效的一種有效方式[6]?,F(xiàn)在國內(nèi)外已有一些認(rèn)知訓(xùn)練系統(tǒng)(如以色列CogniFit公司開發(fā)的個性化訓(xùn)練系統(tǒng))涉及到工作記憶訓(xùn)練,但并沒有專門針對工作記憶的訓(xùn)練系統(tǒng)。即使有少數(shù)工作記憶訓(xùn)練程序(如瑞典卡洛琳那研究所設(shè)計開發(fā)的Cogmed網(wǎng)站),也只能通過計算機(jī)完成,不僅不便攜帶,對于兒童群體特別是低齡兒童來說,鼠標(biāo)操作的形式也會使訓(xùn)練難以進(jìn)行。近些年來,Android平臺以其良好的開放性和平臺便捷性等特點得到人們青睞,加上Android平板電腦的觸摸操作方式簡單友好,可以帶來很好的用戶體驗。因此本文基于Android平臺設(shè)計出便攜式工作記憶訓(xùn)練系統(tǒng),旨在方便的訓(xùn)練個體工作記憶,并能將訓(xùn)練數(shù)據(jù)上傳至數(shù)據(jù)庫。通過大樣本量跟蹤分析,個性化改善訓(xùn)練任務(wù),更好的用于工作記憶訓(xùn)練的研究和發(fā)展。
1 系統(tǒng)分析與設(shè)計
1.1 系統(tǒng)架構(gòu)設(shè)計
本系統(tǒng)的總體架構(gòu)如圖1所示,采用C/S三層結(jié)構(gòu)模式,由基礎(chǔ)數(shù)據(jù)層、通信網(wǎng)絡(luò)層和終端展現(xiàn)層構(gòu)成[7]。硬件方面由聯(lián)想公司的“萬全R520”服務(wù)器和平板電腦組成,開發(fā)工具為臺式電腦。軟件方面考慮到安全性和易用性,選擇微軟公司的SQLServer數(shù)據(jù)庫管理軟件。
圖1 系統(tǒng)總體架構(gòu)
1.2 系統(tǒng)需求分析
本系統(tǒng)基于Android平臺的智能終端進(jìn)行設(shè)計和開發(fā),根據(jù)工作記憶訓(xùn)練系統(tǒng)的需求分析,本系統(tǒng)需要實現(xiàn)以下功能,系統(tǒng)功能結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)功能結(jié)構(gòu)圖
(1) 用戶注冊/登錄功能。為保證數(shù)據(jù)的安全性和用戶的數(shù)據(jù)獨立性,需要采用先注冊再登錄的模式,才能進(jìn)入系統(tǒng)進(jìn)行訓(xùn)練;
(2) 工作記憶訓(xùn)練功能。根據(jù)工作記憶模型設(shè)計不同的任務(wù)進(jìn)行訓(xùn)練。不僅要根據(jù)訓(xùn)練目標(biāo)設(shè)計訓(xùn)練任務(wù),還應(yīng)充分利用人機(jī)交互和多媒體等技術(shù)設(shè)計出生動友好、易于操作的各項訓(xùn)練;
(3) 數(shù)據(jù)查詢功能。該功能可以獲取訓(xùn)練的歷史數(shù)據(jù),通過歷史數(shù)據(jù)的查詢,可清晰地看出個體的訓(xùn)練效果,可采用曲線圖和圖表等方式予以顯示;
(4) 數(shù)據(jù)通信功能。該功能為客戶端和服務(wù)器端的交互提供支撐。用戶登錄系統(tǒng)、數(shù)據(jù)上傳和查詢功能都需要此模塊的后臺支撐;
(5) 數(shù)據(jù)庫管理功能。本地數(shù)據(jù)庫管理功能是利用Android內(nèi)嵌SQLite數(shù)據(jù)庫存儲管理用戶信息及訓(xùn)練數(shù)據(jù)。服務(wù)器端數(shù)據(jù)庫管理功能為獲取Android客戶端的數(shù)據(jù)后,需響應(yīng)客戶端發(fā)送的各項請求;能存儲客戶端發(fā)來的數(shù)據(jù)并根據(jù)要求查詢和修改;保護(hù)數(shù)據(jù)安全,防止惡意攻擊。
2 系統(tǒng)實現(xiàn)
隨著移動技術(shù)的發(fā)展和智能手機(jī)的普及,Android操作系統(tǒng)以其強(qiáng)大的功能及方便和實用性迅速在各行業(yè)推廣應(yīng)用,被稱為第一個真正為移動終端開發(fā)的完整且開放的移動操作系統(tǒng)[8]。本系統(tǒng)開發(fā)平臺為Android 2.2版以上。在進(jìn)行Android應(yīng)用程序開發(fā)時,最基本的是要掌握一些重要組件的定義與屬性的設(shè)置,如活動(Activity)、服務(wù)(Service)、廣播接收器(Broadcast Receiver)以及內(nèi)容提供器(Content Provider)等[9]。軟件流程圖設(shè)計如圖3所示。用戶通過客戶端進(jìn)行注冊,Web服務(wù)器對注冊信息進(jìn)行驗證,訪問后臺數(shù)據(jù)庫。用戶通過已注冊的用戶名和密碼進(jìn)行登錄,Web服務(wù)器對登錄信息進(jìn)行驗證。工作記憶訓(xùn)練模塊作為本系統(tǒng)的核心模塊主要通過Android的Activity類和SurfaceView類實現(xiàn)。數(shù)據(jù)查詢模塊可實現(xiàn)歷史數(shù)據(jù)的查詢和顯示??蛻舳送ㄟ^數(shù)據(jù)通信模塊與服務(wù)器之間進(jìn)行通信,獲得數(shù)據(jù)后,以曲線和圖表的形式顯示在界面上。數(shù)據(jù)通信模塊的實現(xiàn)是客戶端利用HTTP協(xié)議建立與Web服務(wù)的通信連接再收到服務(wù)器端發(fā)來的JSON序列進(jìn)行反序列化顯示在頁面[10]。
圖3 系統(tǒng)程序流程圖
2.1 用戶注冊/登錄模塊
用戶通過客戶端進(jìn)行注冊的步驟為:
(1) 用戶填寫注冊信息,點擊“注冊”按鈕判斷密碼和確認(rèn)密碼一致,如不相同,則需要提示用戶重新輸入,否則將注冊信息提交給Web服務(wù)器;
(2) Web服務(wù)器對注冊信息進(jìn)行驗證,訪問后臺數(shù)據(jù)庫,若數(shù)據(jù)庫中已經(jīng)存在相同用戶名,則注冊失敗,否則將注冊信息存入后臺數(shù)據(jù)庫。驗證完成后Web服務(wù)器需將注冊狀態(tài)信息封裝成JSON數(shù)據(jù)格式發(fā)送回客戶端;
(3) 客戶端解析返回的注冊狀態(tài)信息。若注冊成功,則跳轉(zhuǎn)到登錄界面,否則返回到注冊界面并提示失敗原因。
用戶通過客戶端請求登錄的具體步驟是:
(1) 用戶填寫用戶名和密碼,點擊“登錄”按鈕后,程序判斷用戶名和密碼是否為空,若為空,提示用戶重新輸入信息,否則將登錄信息(用戶名和密碼)提交給Web服務(wù)器;
(2) Web服務(wù)器對登錄信息進(jìn)行驗證,查詢后臺數(shù)據(jù)庫,驗證完成后Web服務(wù)器將登錄狀態(tài)信息封裝成JSON數(shù)據(jù)返回至客戶端;
(3) 客戶端解析返回的登錄狀態(tài)信息。若登錄成功,則進(jìn)入主功能界面;登錄失敗則返回至登錄界面,提示失敗原因。
2.2 工作記憶訓(xùn)練模塊
工作記憶訓(xùn)練模塊是整個系統(tǒng)的核心模塊,根據(jù)Baddeley工作記憶多成分模型設(shè)計實現(xiàn)不同的訓(xùn)練任務(wù)[11]。工作記憶廣度以序列記憶任務(wù)訓(xùn)練,數(shù)字以不同的方位呈現(xiàn)在平板電腦上,要求順序或倒序回憶數(shù)字的方位。工作記憶刷新以N?back任務(wù)訓(xùn)練,依次呈現(xiàn)圖形,要求判斷每一個出現(xiàn)的圖形是否與剛呈現(xiàn)過的前N個圖形匹配。復(fù)雜工作記憶以找不同任務(wù)訓(xùn)練,首先找出三副圖片中不同的一副,多次選擇過后,再回憶出每次選擇的圖片的位置。因文章篇幅有限,本文僅以N?back任務(wù)來展示。N?back任務(wù)為一種連續(xù)加工的任務(wù)類型,是研究工作記憶最常用的認(rèn)知實驗之一,對其訓(xùn)練可以達(dá)到流體智力的提高[12]。其具體操作為參與者瀏覽逐個呈現(xiàn)的圖片,從第N個圖片起判斷每一個出現(xiàn)的圖片是否與前面的倒數(shù)第N個圖片相匹配。在此模塊中,根據(jù)注冊時訓(xùn)練者的年齡對應(yīng)完成不同難度的訓(xùn)練任務(wù),如低齡兒童采用one?back任務(wù),隨著年齡的增長,N也會相應(yīng)增加。此方法實現(xiàn)了訓(xùn)練的適應(yīng)性和軟件的個性化,其他訓(xùn)練任務(wù)也根據(jù)這個原則進(jìn)行設(shè)計及實現(xiàn),更有效的對不同年齡的人群進(jìn)行工作記憶訓(xùn)練。
N?back任務(wù)的控制由NbackActivity類實現(xiàn),此類繼承自Activity類,是整個任務(wù)的入口,同時也接收了用戶的年齡變量。重寫Activity類的onCreate方法完成窗體顯示狀態(tài)操作,初始化界面進(jìn)入訓(xùn)練界面。通過對NbacktipsActivity的xml布局文件設(shè)計完成說明界面。圖形界面的繪制由NbackView類實現(xiàn)。此類繼承SurfaceView類并實現(xiàn)SurfaceHolder.Callback接口,通過getHolder()獲得SurfaceHolde對象,再通過addCallback()添加回調(diào)函數(shù)lockCanvas()獲得Canvas對象并鎖定畫布Canvas進(jìn)行繪畫,最后通過unlockCanvasAndPost()結(jié)束鎖定畫圖,并提交改變,將圖形顯示。通過監(jiān)聽用戶點擊屏幕,重寫onTouchEvent()方法實現(xiàn)人機(jī)間的交互。以下代碼為NbackView重寫surfaceCreated()方法的主要部分。
public void surfaceCreated(SurfaceHolder holder)
{
Canvas canvas = mSurfaceHolder.lockCanvas();
if(mSurfaceHolder==null||canvas==null)
{return;}
Paint paint= new Paint();
canvas.drawBitmap(back, 0, 0, paint);
paint.setTextSize(30);
paint.setColor(Color.RED);
play = BitmapFactory.decodeResource(getResources(), R.drawable.play);
mSurfaceHolder.unlockCanvasAndPost(canvas);
touchFlag = true;
}
2.3 數(shù)據(jù)查詢模塊
通過SQLiteDatabase的rawQuery()方法讀取SQLite中存儲的數(shù)據(jù)可繪制出用戶歷史訓(xùn)練數(shù)據(jù)的表格及其曲線。表格及其曲線的繪制由Canvas類和Paint類實現(xiàn),以下為此模塊實現(xiàn)運用的幾個主要方法:
畫線:drawLine(float startX,float startY,float stopX,float stopY,Paint paint);
畫點: drawPoint(float x,float y,Paint paint);
渲染文本:drawText(String text,float x,float y, Paint paint);
抗鋸齒效果:Paint.setAntiAlias()。
2.4 數(shù)據(jù)通信模塊
用戶注冊和登錄需要與遠(yuǎn)程服務(wù)器進(jìn)行交互,同時也要把相關(guān)數(shù)據(jù)存入遠(yuǎn)程數(shù)據(jù)庫并獲取所需歷史數(shù)據(jù),數(shù)據(jù)通信模塊主要為客戶端和遠(yuǎn)程服務(wù)器之間的數(shù)據(jù)通信服務(wù)。
為了實現(xiàn)與Web的通信,客戶端首先需要利用HTTP協(xié)議建立與Web服務(wù)的通信連接。Android平臺提供了Apache HttpClient接口,為客戶端的HTTP編程提供了高效、便捷、功能豐富的工具包支持[13]。此模塊中使用POST方式向服務(wù)器提交數(shù)據(jù)。首先對請求體參數(shù)(即所要提交的數(shù)據(jù))進(jìn)行封裝,再創(chuàng)建一個POST方式的HttpRequest對象,并設(shè)置POST方式的請求體。其次創(chuàng)建一個默認(rèn)的HTTP客戶端,并執(zhí)行該POST方式的HTTP請求。獲得服務(wù)器的響應(yīng)碼,據(jù)此判斷服務(wù)器是否正確響應(yīng)。最后獲得服務(wù)器的響應(yīng)內(nèi)容,轉(zhuǎn)換成String字符串進(jìn)行顯示。使用GET方式獲取服務(wù)器上的數(shù)據(jù),方法與POST方式相類似??蛻舳耸盏椒?wù)器發(fā)來的JSON序列后需要將其反序列化為可正常顯示的對象,通過JSONArray類和JSONObject類來實現(xiàn)[14?15]。
2.5 數(shù)據(jù)庫管理模塊
為方便管理并保證數(shù)據(jù)的安全可靠,采用了本地數(shù)據(jù)存儲和遠(yuǎn)程數(shù)據(jù)庫存儲2種方式。本地數(shù)據(jù)庫采用了SQLite這種輕量級的小型數(shù)據(jù)庫。SQLite在數(shù)據(jù)存儲、管理、維護(hù)等各方面都相當(dāng)出色,功能十分強(qiáng)大[16]。對于Android平臺來說,系統(tǒng)內(nèi)置了豐富的API來供開發(fā)人員操作SQLite,我們可以輕松的完成對數(shù)據(jù)的存取[17]。以下代碼實現(xiàn)了訓(xùn)練模塊中N?back任務(wù)的數(shù)據(jù)存儲。
public void SaveToDb()
{
File Path = new File("/sdcard/databasefile");
File f = new File("/sdcard/databasefile/WMDb");
if(!Path.exists())
{ Path.mkdirs(); }
if(!f.exists()){
try
{f.createNewFile();
}catch(IOException e)
{e.printStackTrace();}
} SQLiteDatabase db = SQLiteDatabase.openOrCreate
Database(f, null);
…
db.insert("Nback_Info", null, cv);
db.close(); }
遠(yuǎn)程服務(wù)器數(shù)據(jù)庫中主要包括2張表:用戶信息數(shù)據(jù)表以及工作記憶訓(xùn)練信息數(shù)據(jù)表。
表1 用戶信息數(shù)據(jù)表
3 系統(tǒng)測試
基于Android平臺的便攜工作記憶訓(xùn)練系統(tǒng)的軟件測試主要包括3個方面:功能測試、界面測試、數(shù)據(jù)項測試。功能測試:測試各個模塊及窗口所完成的功能是否準(zhǔn)確,操作是否方便,是否能夠準(zhǔn)確執(zhí)行。界面測試:界面是否簡潔友好并符合需求,各個訓(xùn)練模塊的提示語是否清晰明了,功能鍵是否描述準(zhǔn)確。數(shù)據(jù)項測試:與數(shù)據(jù)庫的連接是否正常,后臺數(shù)據(jù)庫的數(shù)據(jù)存儲是否正確,各個模塊的數(shù)據(jù)計算結(jié)果是否正確。經(jīng)過對軟件每一模塊和單元的測試,驗證了功能和界面的有效性和完整性。因論文篇幅有限,這里給出部分系統(tǒng)運行截圖,如圖4和圖5所示,分別為用戶登錄/注冊界面和N?back任務(wù)運行界面。經(jīng)過多次數(shù)據(jù)傳輸測試和對后臺數(shù)據(jù)庫的數(shù)據(jù)校驗,數(shù)據(jù)的正確率為100%。通過系統(tǒng)運行測試,驗證了此基于Android平臺的便攜式工作記憶訓(xùn)練系統(tǒng)的可行性。
表2 工作記憶訓(xùn)練信息數(shù)據(jù)表
圖4 用戶注冊/登錄界面
圖5 N?back任務(wù)運行界面
4 結(jié) 語
工作記憶在個體的認(rèn)知行為中起來了不可替代的作用,與人類智力、學(xué)習(xí)、推理、創(chuàng)造力等高級認(rèn)知活動之間存在密切的關(guān)系。通過工作記憶訓(xùn)練,兒童的智力水平等方面可以得到有效的提高。本文介紹了基于Android平臺的工作記憶訓(xùn)練系統(tǒng)設(shè)計和開發(fā),可將智能終端與工作記憶訓(xùn)練有效結(jié)合,提供更便捷、更有效的訓(xùn)練手段,對于工作記憶訓(xùn)練具有一定的實用價值和借鑒價值。
參考文獻(xiàn)
[1] BADDELEY A D. Working memory [J]. Scholarpedia, 2010, 5(2): 3015?3018.
[2] 趙鑫,周仁來.工作記憶:人類高級認(rèn)知活動的核心[J].北京師范大學(xué)學(xué)報:社會科學(xué)版,2010(5):38?44.
[3] 蔡笑岳,蘇靜.工作記憶與領(lǐng)域知識在個體認(rèn)知行為中的作用[J].心理與行為研究,2008(4):306?310.
[4] 黎翠紅,何旭,郭春彥,等.工作記憶訓(xùn)練的研究述評[J].心理與行為研究,2014(3):407?412.
[5] 趙鑫,周仁來.工作記憶訓(xùn)練:一個很有價值的研究方向[J].心理科學(xué)進(jìn)展,2010,18(5):711?717.
[6] 仲崇健. 工作記憶與注意的訓(xùn)練對小學(xué)生流體智力的影響[D].重慶:西南大學(xué),2011.
[7] 虞開森,駱小龍,余魁,等.基于iphone的防汛掌上通平臺設(shè)計與應(yīng)用[J].水利水電科技進(jìn)展,2010,30(6):74?77
[8] 李寧.Android應(yīng)用開發(fā)實戰(zhàn)[M].2版.北京:機(jī)械工業(yè)出版社,2012.
[9] 張毅.Android軟件安全開發(fā)研究[J].信息安全與技術(shù),2014(9):70?71.
[10] 龔成瑩,邢敬宏,胡銀保,等.基于JSON的Android移動終端與PHP及MySQL數(shù)據(jù)通信[J].工業(yè)儀表與自動化裝置,2013(1):63?65.
[11] 鐘潔.Baddeley工作記憶模型發(fā)展的綜述[J].湖北經(jīng)濟(jì)學(xué)院學(xué)報:哲學(xué)社會科學(xué)版,2010,24(4):136?137.
[12] 趙延鑫.n?back范式在工作記憶研究中的應(yīng)用[J].心理醫(yī)生,2012(7):64?64.
[13] 黃淑靜,楊紅梅.利用JSON+Web Service實現(xiàn)Android訪問遠(yuǎn)程數(shù)據(jù)庫[J].科技信息,2013(9):98?99.
[14] 邢四為.基于JSON的信息交互系統(tǒng)的研究與實現(xiàn)[D].合肥:安徽大學(xué),2013.
[15] 江燕.基于Android智能終端的遠(yuǎn)程控制系統(tǒng)[J].電子技術(shù)應(yīng)用,2012(8):129?132.
[16] 倪紅軍.基于Android系統(tǒng)的數(shù)據(jù)存儲訪問機(jī)制研究[J].計算機(jī)技術(shù)與發(fā)展,2013,23(6):90?93.
[17] 馬獲蕾,湯海鳳.Android系統(tǒng)中SQLite數(shù)據(jù)庫的研究[J].電腦知識與技術(shù),2013(8):6243?6245.