魏亮水 宋英男 鄧靜靜 崔星童
摘要:大學(xué)生心理輕問診APP是基于大學(xué)生心理咨詢室而設(shè)計開發(fā)的線上平臺,充分協(xié)調(diào)和整合資源,服務(wù)在校大學(xué)生,提高大學(xué)生心理健康水平。問診平臺的主要功能是為學(xué)生科普心理學(xué)知識,增強學(xué)生對心理學(xué)的認識,同時咨詢師能夠在問答社區(qū)對提出問題的學(xué)生進行問診和幫助。平臺也為學(xué)生提供預(yù)約咨詢師的入口。心理咨詢師能根據(jù)學(xué)生用戶在平臺留下的數(shù)據(jù)分析用戶,監(jiān)測學(xué)生的的心理健康狀況。心理輕問診平臺讓大學(xué)生擁有一個更加健康的心靈世界。
關(guān)鍵詞:Android;移動互聯(lián)網(wǎng);心理咨詢系統(tǒng);社區(qū)問答;數(shù)據(jù)分析
中圖分類號:TP393 文獻標(biāo)識碼:A 文章編號:1009-3044(2018)11-0089-03
1 背景
在我國互聯(lián)網(wǎng)的發(fā)展過程中,PC互聯(lián)網(wǎng)已日趨飽和,移動互聯(lián)網(wǎng)卻呈現(xiàn)井噴式發(fā)展。伴隨著移動終端價格的下降及wifi的廣泛鋪設(shè),移動網(wǎng)民呈現(xiàn)爆發(fā)趨勢。智能手機在大學(xué)生群體中的普及率也是非常高。
在工作、生活中,人們越來越依賴于智能設(shè)備所提供的種種便利的功能。而在眾多智能設(shè)備中,裝有Android操作系統(tǒng)的智能手機、平板電腦,占據(jù)了很大的比例,由廣大開發(fā)者所設(shè)計實現(xiàn)的Android應(yīng)用,提供了種類繁多的功能[1]。
全球大概3億5千萬人遭受抑郁困擾,全球14%的疾病困擾來自于精神疾病,每年有80萬人死于自殺,6000萬人受雙向情感障礙困擾。工作、生活、感情等方面影響著現(xiàn)代人的身心健康,除了嚴重的精神疾病之外,更多人們經(jīng)受“失眠”、“抑郁”、“焦慮”等問題。人們需要獲得更多專業(yè)信息及服務(wù)來幫助自己[2]。
隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,開展在線心理健康服務(wù),正逐步成為高等學(xué)校信息化建設(shè)的一個重要內(nèi)容。所以適應(yīng)時代變化,加強和改進大學(xué)生心理服務(wù)工作,提升高校心理咨詢師工作效率和服務(wù)效果,必須積極創(chuàng)新思想觀念、改進管理方式,構(gòu)建一個具有大學(xué)生特色的心理工作在線平臺,以提高大學(xué)生心理工作的科學(xué)化和信息化水平[3]。
大學(xué)生在線心理輕問診APP服務(wù)的是在校的大學(xué)生。通過智能手機終端,學(xué)生可以查看各類的心理學(xué)知識,與周圍的同學(xué)一同交流,也可以向?qū)W校專業(yè)的心理咨詢老師需求幫助。同時心理咨詢老師也能更加高效服務(wù)學(xué)生,監(jiān)測學(xué)生的心理健康狀況。
2 開發(fā)環(huán)境介紹
2.1 Android 系統(tǒng)
Android 是基于 Linux 的自由及開放源代碼的操作系統(tǒng),運用于移動終端,例如:手機、平板電腦。它是由Google 公司和開放手機聯(lián)盟合作起來領(lǐng)導(dǎo)及開發(fā)的。Android系統(tǒng)具有開放性、豐富的硬件支持、方便開發(fā)、與谷歌的無縫連接等優(yōu)點[4]。
2.2 MySQL數(shù)據(jù)庫
MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),使用最常用的數(shù)據(jù)庫管理語言--結(jié)構(gòu)化查詢語言(SQL)進行數(shù)據(jù)庫管理。目前屬于 Oracle 旗下 產(chǎn)品,是目前應(yīng)用廣泛的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一。
2.3 Tomcat
Apache Tomcat 由Apache、Sun 和其他一些公司及個人共同開發(fā)而成。Tomcat 服務(wù)器是一個開放源代碼的Web 應(yīng)用服務(wù)器,屬于輕量級應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試JSP 程序的首選。
2.4 Android stuido
Android Studio 是一個它是谷歌推出的新的Android開發(fā)環(huán)境,基于IntelliJ IDEA. 類似 Eclipse ADT。Android Studio 提供了集成的 Android 開發(fā)工具用于開發(fā)和調(diào)試。
2.5 Myeclipse
MyEclipse是在eclipse 基礎(chǔ)上加上自己的插件開發(fā)而成的功能強大的企業(yè)級集成開發(fā)環(huán)境,主要用于Java、Java EE以及移動應(yīng)用的開發(fā)。它是功能豐富的JavaEE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate、MyBatis等。
3 應(yīng)用分析與設(shè)計
3.1 系統(tǒng)設(shè)計
3.1.1 首頁板塊
首頁設(shè)計的比較簡潔明了,主要分為三部分的內(nèi)容。首頁頂部將以輪播圖的形式展現(xiàn)與心理有關(guān)的新聞,或者學(xué)校內(nèi)部舉辦的與心理有關(guān)的活動通知。讓同學(xué)能意識到人們的心理健康問題一直是受到社會、政府、媒體和學(xué)校關(guān)注的。在首頁中部,是六類心理學(xué)文章,分別是“個人成長”、“人際交往”、“性心理”、“家庭關(guān)系”和“職業(yè)生涯”,用戶能對閱讀的文章收藏、點贊和評論,給學(xué)生提供一條學(xué)習(xí)對心理學(xué)知識的渠道。在分類文章下方,是科普推送的文章,這是根據(jù)所有學(xué)生對文章的瀏覽記錄,推薦的瀏覽數(shù)較多的文章,讓用戶及時了解關(guān)注量較高的優(yōu)質(zhì)文章。
3.1.2 問答社區(qū)板塊
問答社區(qū)的主要功能是用戶可以在社區(qū)中提出自己的問題,在社區(qū)中需求專業(yè)心理咨詢師的幫助。用戶可以直接點擊問題編輯按鈕,然后在問題編輯界面用戶可以描述自己的問題。在問題發(fā)布后,專業(yè)的咨詢師將會對問題進行解答。學(xué)生用戶可以對咨詢師的回答進行點贊。同時用戶在搜索欄中可以通過關(guān)鍵字搜尋自己感興趣的問題。
3.1.3 咨詢板塊
在咨詢界面,學(xué)生用戶可以查看到學(xué)校的心理咨詢老師的信息,主要包括咨詢師的個人信息和擅長的咨詢領(lǐng)域。在界面頂部區(qū)域,學(xué)生能夠點擊預(yù)約按鈕跳轉(zhuǎn)至預(yù)約編輯界面,填寫完預(yù)約內(nèi)容后,學(xué)生就可等待老師的回復(fù),為學(xué)生安排咨詢時間。
3.1.4 個人中心板塊
個人中心界面主要呈現(xiàn)用戶模塊、“我的收藏”模塊、“我的提問”模塊、“我的消息”模塊。 用戶模塊,實現(xiàn)用戶的登錄、個人資料上傳和頭像修改。學(xué)生用戶的登錄是通過教務(wù)系統(tǒng)的賬號密碼來登錄的?!拔业氖詹亍焙汀拔业奶釂枴蹦K,用戶可以分別查找到自己收藏的文章和提出過的問題。在“我的消息”模塊,用戶可以查看預(yù)約回復(fù)信息。
3.2 系統(tǒng)功能結(jié)構(gòu)
3.3 數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫設(shè)計是建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng)的技術(shù),是信息系統(tǒng)開發(fā)和建設(shè)中的核心技術(shù)。由于數(shù)據(jù)庫應(yīng)用系統(tǒng)的復(fù)雜性,為了支持相關(guān)程序運行,數(shù)據(jù)庫設(shè)計就變得異常復(fù)雜,因此數(shù)據(jù)庫設(shè)計是一種“反復(fù)探尋,逐步求精”的過程,也就是規(guī)劃和結(jié)構(gòu)化數(shù)據(jù)庫中的數(shù)據(jù)對象以及這些數(shù)據(jù)對象之間關(guān)系的過程。該平臺設(shè)計了應(yīng)用服務(wù)器端accompany數(shù)據(jù)庫,應(yīng)用服務(wù)器端accompany數(shù)據(jù)庫包括用戶表、評論表、文章表、文章評論表,文章標(biāo)簽表,問題表,問題標(biāo)簽表等。
3.4 相關(guān)技術(shù)框架
1)Dagger2
面向?qū)ο缶幊探?jīng)常需要處理各種依賴關(guān)系,都需要在使用它們的地方進行實例對象構(gòu)建,對象之間可能還存在著各種各樣的依賴關(guān)系。Dagger2 (A fast dependency injector for Android and Java)正是一個安卓和Java的依賴注入框架,使用代碼自動生成創(chuàng)建依賴關(guān)系需要的代碼。減少很多模板化的代碼,更易于測試,降低耦合,創(chuàng)建可復(fù)用可互換的模塊。
2) MVP(Model-View-Presenter)
Model 是數(shù)據(jù)源層。比如數(shù)據(jù)庫接口或者遠程服務(wù)器的api。Presenter是從Model中獲取數(shù)據(jù)并提供給View的層,Presenter還負責(zé)處理后臺任務(wù)。View是指顯示數(shù)據(jù)并且和用戶交互的層。
View層不持有Model層對象任何引用,當(dāng)然參數(shù)里面和臨時變量里可以有Model層對象。View層只持有Presenter層對象引用,任何需要更新或者操作數(shù)據(jù)的,都間接通過Presenter對象去操作數(shù)據(jù)。而Model層想要操作View層是無法實現(xiàn)的,必須通過Presenter層。
Presenter層持有View層對象的引用,除此之外不持有其他的UI控件等的引用,Model層會把想要更新View的操作委托Presenter去操作,而Presenter層會把更新View操作交給View層對象去操作。
3)retrofit2+OKHttp3+rxjava2
Retrofit是一個Android和 Java平臺的類型安全的網(wǎng)絡(luò)請求框架。Retrofit 通過將API 抽象成Java接口而讓連接到 RESTweb服務(wù)變得簡單。這個網(wǎng)絡(luò)請求庫可以很簡單的把返回的JSON或者XML數(shù)據(jù)解析成簡單Java對象(POJO)。GET, POST, PUT, PATCH和DELETE 這些請求都可以執(zhí)行。
和大多數(shù)開源軟件一樣,Retrofit 也是建立在一些強大的庫和工具基礎(chǔ)上的。Retrofit 背后用了同一個開發(fā)團隊的OkHttp 來處理網(wǎng)絡(luò)請求。而且Retrofit不再內(nèi)置JSON 轉(zhuǎn)換器來將JSON裝換為Java對象。取而代之的是提供以下JSON轉(zhuǎn)換器來處理:
Gson: com.squareup.retrofit:converter-gson
Jackson: com.squareup.retrofit:converter-jackson
Moshi: com.squareup.retrofit:converter-moshi
對于 Protocol Buffers, Retrofit 提供了:
Protobuf: com.squareup.retrofit2:converter-protobuf
Wire: com.squareup.retrofit2:converter-wire
對于 XML 解析, Retrofit 提供了:
Simple Framework: com.squareup.retrofit2:converter-simpleframework
通過RxJava可以很簡單的實現(xiàn) Retrofit。在 Retrofit 1 中是默認整合的,但是在Retrofit2中需要額外添加依賴。
okhttp用于android中請求網(wǎng)絡(luò)。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。使用OKHttp進行網(wǎng)絡(luò)請求支持兩種方式,一種是同步請求,一種是異步請求。OkHttp有如下特性:支持http2,對一臺機器的所有請求共享同一個socket 2;內(nèi)置連接池,支持連接復(fù)用,減少延遲;支持透明的gzip壓縮響應(yīng)體 ;通過緩存避免重復(fù)的請求 5)請求失敗時自動重試主機的其他ip,自動重定向。
4)觀察者模式
觀察者模式是一種使用頻率非常高的設(shè)計模式,最常用的地方就是訂閱-發(fā)布系統(tǒng)。
這個模式的重要作用就是將觀察者和被觀察者解耦,使他們之間的依賴更小甚至沒有。
Subject:抽象被觀察者(Observeable),把所有觀察者對象的引用保存在一個集合里,每個主題都可以有任意數(shù)量的觀察者,抽象被觀察者提供一個接口,可以增加和刪除觀察者對象。
ConcreteSubject:具體的被觀察者,將有關(guān)狀態(tài)存入具體的觀察者對象,在具體的被觀察者內(nèi)部狀態(tài)發(fā)生變化時,給所有注冊的觀察者發(fā)送通知。
Observer:抽象觀察者,定義了一個更新接口,使得在得到被觀察者的通知時更新自己。
ConcreteObserver:具體的觀察者,實現(xiàn)了抽象觀察者鎖定義的接口,用來在收到通知時更新自己。
3.5 技術(shù)難點
1)在Android中使用dagger2.0需要注意三個問題,以悟空使用金箍棒為例:
第一步,定義依賴和被依賴的對象的類,悟空類和金箍棒類?!耙蕾囶悺焙汀氨灰蕾囶悺钡臉?gòu)造函數(shù)用@Inject注解修飾。@Inject修飾的構(gòu)造函數(shù)和`@Module`的`provideXXX`方法二者可以省略一個。Dagger可以根據(jù)其中的任意一種配置創(chuàng)建依賴的對象。
第二步,定義一個@Module注解的類,一般叫做XXXModule。里面寫的@Provides注解修飾的方法。這些@Provides方法返回“悟空類”和“金箍棒類”對象。比如@Provides Wukong provideWukong(){ return new Wukong(); }
第三步,創(chuàng)建一個interface,并用@Component注解修飾。一般叫做XXXComponent。里面寫一個注入方法:void inject(Wukong wk);。這里Wukong只是一個例子。任何你準(zhǔn)備要注入的類都可以代替上面參數(shù)的Wukong類。
第四步,在需要注入的地方寫@Inject的field。
最后,Dagger會根據(jù)上面的內(nèi)容和最后的@Component接口生成一個DaggerXXXComponent的類型,使用這個類型來實現(xiàn)注入。上面的1到3步可以理解為依賴的配置。最后的XXXComponent代替之前的Reflect方式實現(xiàn)注入。
3.6 頁面效果
3.6.1 首頁
首頁的效果圖,包括輪播圖展示新聞和學(xué)校的通知、分類的心理學(xué)知識以及推送的心理學(xué)文章。如圖3。
當(dāng)用戶點擊每一類文章的圖標(biāo)后,即可進入了文章列表界面,用戶點擊文章后,可以進行評論和點贊。以個人成長為例,如圖4、5、6所示:
3.6.2 問答社區(qū)
問答社區(qū)界面如圖7、8:
在用戶點擊進入每個問題之后,即可顯示問題的具體情況和咨詢師對他們的評價,并對其進行收藏或點贊操作。用戶也可以在社區(qū)中提出自己的問題,在社區(qū)中尋求幫助,
3.6.3 預(yù)約咨詢
4 結(jié)論
該應(yīng)用程序基本實現(xiàn)了設(shè)計目標(biāo)和要求的功能,為學(xué)校的心理健康教育提供了一個較好的線上平臺,提高了學(xué)校心理咨詢老師的服務(wù)效果。幫助學(xué)生用戶提供了一個學(xué)習(xí)知識和需求心理上問題幫助的平臺,讓大學(xué)生在校園鍛造一個健康的心靈世界。
參考文獻:
[1] 陳滸. 基于Android的文件管理系統(tǒng)的設(shè)計與實現(xiàn)[D]. 廈門: 廈門大學(xué), 2017.
[2] 簡單心理學(xué)術(shù)研究團隊. 心理咨詢行業(yè)2016調(diào)查報告[R]. 簡單心理和北京大學(xué)心理咨詢與治療中心, 2016: 4-5.
[3] 劉曦. 基于Android的社區(qū)生活服務(wù)系統(tǒng)的設(shè)計與實現(xiàn)[D]. 沈陽: 東北大學(xué), 2014.
[4] 明日科技. Android 從入門到精通(2012 年版)[M]. 北京: 清華大學(xué)出版社, 2012: 4-10.