李世揚,王慶喜,成蘭,儲澤楠
(安陽工學院 計算機學院,河南 安陽 455000)
?
移動社交應用系統(tǒng)的設計與實現(xiàn)
李世揚,王慶喜,成蘭,儲澤楠
(安陽工學院 計算機學院,河南 安陽 455000)
為了開發(fā)高質量的移動社交應用系統(tǒng),對系統(tǒng)進行了全面的設計,包括系統(tǒng)架構設計、功能設計、業(yè)務流程設計、數(shù)據(jù)庫設計和界面設計.在設計的基礎上,采用Android技術開發(fā)系統(tǒng)移動前端,采用PHP語言、MySQL數(shù)據(jù)庫和Apache開發(fā)服務器后臺.全面闡述了系統(tǒng)的詳細設計以及系統(tǒng)的消息發(fā)送、消息處理和接收以及智能推薦好友算法的實現(xiàn).
移動應用;社交;系統(tǒng)設計;系統(tǒng)實現(xiàn)
社會交往是人的重要活動,也是人的重要屬性.隨著時代的進步和社會的發(fā)展,近年來移動開發(fā)技術取得了重大進步,社交功能可以在移動手機上實現(xiàn),在需求的驅動下,移動社交開發(fā)立即成為了軟件開發(fā)的熱點項目,因為移動社交應用為人類提供了更加便捷、高效的社交方式.本文主要對移動社交應用進行設計并給出部分實現(xiàn).
通過對實際需求的分析,提出了本系統(tǒng)的構架,Android客戶端任務是向本應用的服務器提出服務請求,服務器對用戶身份進行驗證后用HTTP協(xié)議把經(jīng)過處理過的數(shù)據(jù)加工成JSON格式的數(shù)據(jù)發(fā)送到手機客戶端,手機客戶端負責處理接受的JSON格式的數(shù)據(jù)然后顯示到Android手機上.當然,服務器在處理數(shù)據(jù)的過程中,實現(xiàn)對數(shù)據(jù)庫的查詢、修改、更新等功能,獲取數(shù)據(jù)并進行處理,還會請求第三方服務器的服務,比如人臉識別功能中對圖像的檢測的識別結果,以及消息推送服務.這些結果需要在本應用的服務器上處理之后再返回給客戶端進行處理.
本應用系統(tǒng)主要由6大功能模塊組成:用戶注冊登陸、獲取好友動態(tài)模塊、即時通訊模塊、最近會話模塊、好友管理模塊、人臉識別模塊.
(1)用戶注冊登陸
用戶首次使用該應用必須進行用戶注冊,注冊成功后,可以通過注冊賬號或者注冊郵箱進行登錄,登陸成功后,方可以進入本應用的主界面.當用戶忘記用戶名或密碼時,可以利用登錄時注冊的郵箱找回用戶名和密碼.
(2)獲取好友動態(tài)模塊
當用戶成功登陸本應用之后,可以在主界面中的好友動態(tài)模塊里獲取到好友的動態(tài)信息.并且可以通過下拉列表進行刷新,異步獲取服務器上的好友動態(tài).
(3)即時通訊模塊
可以選擇聯(lián)系人進行聊天,消息內(nèi)容通過第三方SDK推送給對應的好友.當然,也可以即時接受到好友發(fā)送過來的消息.
(4)最近會話模塊
根據(jù)最近聊天聯(lián)系人,可以獲取到聯(lián)系人信息以及最新的一條聊天記錄的會話列表.
(5)好友管理模塊
對好友進行管理,包括添加和刪除好友等功能.
(6)人臉識別模塊
通過自己的照片為自己設置臉譜,照片中的信息通過FacePlusPlus進行檢測.通過照片搜索陌生用戶在本應用下的社交信息資料.
(7)智能推薦好友模塊
根據(jù)共同好友數(shù)量,編寫推薦算法進行智能推薦好友.
3.1 即時通訊
該功能模塊,是依賴第三方平臺JPush提供的消息推送API進行實現(xiàn)的.首先,在JPush官網(wǎng)申請開發(fā)者賬號,獲取APP_KEY和APP_SECRET,并創(chuàng)建自己的應用推信.然后在自己的服務器環(huán)境下,搭建自己的服務器接口,這些接口是獲取從手機客戶端發(fā)送過來的請求,然后進行相應處理之后,發(fā)送對應的請求到第三方服務器上,調用他們提供的接口,返回處理結果,然后將結果寫入本系統(tǒng)數(shù)據(jù)庫中.同時將返回的處理結果進行再次處理成客戶端需要的數(shù)據(jù)格式給客戶端.即時通訊流程如圖1所示.
圖1 即時通訊流程圖
圖2 人臉識別流程圖
3.2 人臉識別
該功能模塊,是依賴第三方平臺FacePlusPlus提供的人臉識別API進行實現(xiàn)的.首先,在FacePlusPlus官網(wǎng)申請開發(fā)者賬號,獲取APP_KEY和APP_SECRET,并創(chuàng)建自己的應用推信.然后在自己的服務器環(huán)境下,搭建自己的服務器接口,這些接口是獲取從手機客戶端發(fā)送過來的請求,然后進行相應處理之后,發(fā)送對應的請求到第三方服務器上,調用他們提供的接口,返回處理結果,然后將結果寫入本系統(tǒng)數(shù)據(jù)庫中.同時將返回的處理結果進行再次處理成客戶端需要的數(shù)據(jù)格式給客戶端.人臉識別流程如圖2所示.
圖3 實體關系圖
移動社交應用系統(tǒng)的功能主要在于即時通訊,其數(shù)據(jù)庫相對比較簡單,其實體主要有用戶和消息.系統(tǒng)數(shù)據(jù)庫的實體關系圖如圖3所示.
5.1 獲取好友動態(tài)的列表
通過ListView組件實現(xiàn)好友動態(tài)的列表,然后再通過設置ListView的組件的刷新監(jiān)聽器setOnRefreshListener,判斷用戶操作動作,實現(xiàn)當用戶在界面上進行下拉操作時,進行請求服務器獲取數(shù)據(jù),并通知UI界面顯示出來.
5.2 會話列表和即時通訊
會話列表也是自定義的ListView和適配器來實現(xiàn)的.當然,會話列表也含有下拉刷新,獲取最新會話的功能.在會話列表點擊選中的會話,就會進入聊天的主界面.
5.3 好友分組管理
好友分組列表的顯示是通過ExpandableListView和自定義的監(jiān)聽器實現(xiàn)的,設置了添加好友和添加群組的按鈕監(jiān)聽器,如果按下相應按鈕會打開另外一個Activity,如打開AddFriendActivity,則處理和顯示添加好友的操作.
在界面中我們可以看到我的好友和我的群組的列表框,點擊可以折疊盒展開.具體設計實現(xiàn)
5.4 人臉識別
人臉識別功能是采用FacePlusPlus的第三方API服務,我們通過調用他們提供給開發(fā)者的人臉識別接口,整合到應用里面,實現(xiàn)根據(jù)人臉搜索好友等功能,界面實現(xiàn).
頭戴安全帽,身穿黃馬褂,火辣的陽光照射著施工現(xiàn)場,一層層熱浪撲打在身上,汗水濕透了衣服,可看不出一點兒疲憊的樣子,依然洋溢著熱情干著工作。郭慶富,這個活躍在施工生產(chǎn)一線,集團公司的十大“杰出青年”,現(xiàn)在已經(jīng)是二公司哈佳項目部的常務副經(jīng)理,技術工作的“首領”,他是編制方案的主心骨,有他在的現(xiàn)場,總能讓人放下心來。
6.1 消息的發(fā)送
登錄系統(tǒng)之后,會記錄當前登錄用戶的賬號信息.然后獲取當前登錄用戶的好友列表和分組,并顯示到Android UI界面.選擇好友進行聊天的過程,從EditText控件中獲取到輸入的消息,然后進行封裝,通過GET方式,請求服務器API,發(fā)送當前用戶的聊天數(shù)據(jù)和當前登錄賬號uid,以及消息接收者的uid.關鍵代碼如下.
GalHttpRequest request;
String requestUrl=Config.API_URL+“IM/messageSend/uid/”+f_uid+“/from_uid/”+uid+“/content/”+msgContent;
request=GalHttpRequest.requestWithURL(this,requestUrl);
request.startAsynRequestString();
6.2 消息的處理
在服務器端,接受到客戶端發(fā)送過來的消息內(nèi)容和發(fā)送者和接收者的賬號uid,調用消息發(fā)送函數(shù),處理數(shù)據(jù)并調用JPush API.關鍵代碼如下.
$sendStatus=$this->send($from_uid,$msg[′to_uid′],$from_uid,$msg[′content′]);
$Push=new Model(′Push′);
6.3 消息的接收
消息接受是通過在客戶端集成JPush SDK,并設置廣播監(jiān)聽器,通過監(jiān)聽器,獲取Jpush 推送過來的消息,進行處理之后,顯示到Android界面.關鍵代碼如下.
if(MESSAGE_RECEIVED_ACTION.equals(intent.getAction())){
String title=intent.getStringExtra(Constants.KEY_TITLE);
String content=intent.getStringExtra(Constants.KEY_MESSAGE);
int from_uid=intent.getIntExtra("from_uid",0);
int to_uid=intent.getIntExtra("to_uid",0);
String all=intent.getStringExtra(Constants.KEY_ALL);
ContentValues values=new ContentValues();
DatabaseHelper dbHelper=new DatabaseHelper(getApplicationContext(),"tuixin",3);
SQLiteDatabase db=dbHelper.getWritableDatabase();
db.insert("push",null,values);
}
6.4 智能推薦好友算法
該算法是為了實現(xiàn)添加好友的智能推薦.通過查詢當前登錄用戶的好友列表,然后查詢其好友的好友列表,組成一個不重復且不包含自己的用戶列表.最后獲取每個用戶的詳細信息返回給用戶的手機客戶端,顯示到用戶的手機界面上.關鍵代碼如下:
foreach($friendList as $fid){
$friend_id=$fid[′friend_id′];
$c=$F->where("uid=$friend_id")->select();
foreach($c as $ff){
$ffuid=$ff[′friend_id′];
$is=false;
foreach($friendList as $f1){
if(!$is1){
$friendResult[]=$f;
}
}
}
}
本文介紹了移動社交應用系統(tǒng)的概要設計和詳細設計以及數(shù)據(jù)庫的實體關系圖設計;并在此基礎之上,以即時通訊、人臉識別模塊的實現(xiàn)為例介紹了移動社交應用系統(tǒng)的實現(xiàn).本文系統(tǒng)創(chuàng)新地把人臉識別應用于移動社交應用系統(tǒng),擴充了移動社交應用系統(tǒng)的功能,使人類的社會交往更加高效便捷,滿足了快節(jié)奏時代需求,其應用前景十分廣闊.
[責任編輯:王軍]
The design and implementation of mobile social application system
LI Shiyang,WANG Qingxi,CHENG Lan,CHU Zenan
(College of Computer,Anyang Institute of Technology,Anyang 455000,China)
In order to develop high quality mobile social applications system,the comprehensive system design was carried on,including system architecture design,functional design,business process design,database design and interface design.On the basis of the system design,interface of the system was developed by Android,server backstage was developed using PHP language,MySQL database and of Apache.The detailed design of the system and system messages,message processing and receive and intelligent recommend good implementation of the algorithm was expounded.
mobile application;social;system design;system implementation
2016-04-27
安陽工學院科研基金項目(YJJ2014015);安陽工學院青年科研基金項目(QJJ2015027)
李世揚(1982-),男,河南鶴壁人,安陽工學院講師,碩士,主要從事軟件開發(fā)和數(shù)據(jù)庫技術的研究.
TP311.52
A
1672-3600(2016)12-0057-04