笪林梅
(江蘇財經(jīng)職業(yè)技術(shù)學(xué)院 機械電子與信息工程學(xué)院, 江蘇 淮安 223003)
移動互聯(lián)網(wǎng)時代,人們之間的交流和互動越來越依賴于手機,尤其是當下的大學(xué)生們。即時通信(Instant Message,簡稱IM)已經(jīng)成為時下應(yīng)用最為廣泛的一種實時通信方式。它建立在因特網(wǎng)和其它有線、無線網(wǎng)絡(luò)基礎(chǔ)之上,是一個集成了交流、資訊、娛樂、搜索、電子商務(wù)、辦公協(xié)作和企業(yè)客戶服務(wù)等為一體的綜合性信息平臺。
當前,大學(xué)生們喜愛的即時通信工具主要有QQ、微信和陌陌等,這些工具的功能已經(jīng)非常完善。而本論文的研究目的是基于Android技術(shù)開發(fā)一種適用于校園的多媒體聊天系統(tǒng),它能夠效仿微信,以校園溝通交流為目的,實現(xiàn)用戶的注冊與登錄、好友的管理(增刪改查)、好友的一對一聊天、群聊、音視頻共享、校園資訊發(fā)布等功能。系統(tǒng)界面簡潔明了,易于用戶操作,能夠在校園推廣使用。
Android系統(tǒng)是一個開放的移動互聯(lián)操作系統(tǒng),它的底層基于Linux,系統(tǒng)架構(gòu)采用分層模式,從低到高依次是Linux內(nèi)核層、系統(tǒng)運行庫層、應(yīng)用程序框架層和應(yīng)用程序?qū)?。[1]
Android包含四大組件,即 Activity、Service、BroadcastReceiver和 ContentProvider。[2]Activity是用戶和應(yīng)用程序交互的窗口,可以調(diào)用onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()、onRestart()等方法分別實現(xiàn)創(chuàng)建、激活、恢復(fù)、暫停、停止、銷毀和重啟。Service是沒有界面的Activity,一般運行于后臺,封裝一個完整的功能邏輯實現(xiàn)。BroadcastReceiver接受一種或者幾種Intent為觸發(fā)事件,接收相關(guān)消息,進行一些簡單處理,當這些事件發(fā)生時,系統(tǒng)喚醒或傳遞消息到BroadcastReceiver,以此統(tǒng)一Android的事件廣播模型。ContentProvider是Android系統(tǒng)提供的第三方應(yīng)用數(shù)據(jù)的訪問方案,共享自己的數(shù)據(jù)給外部來調(diào)用,提供數(shù)據(jù)訪問接口。[3]
本系統(tǒng)的主體功能是校園多媒體即時通信,能夠滿足師生和同學(xué)之間會話操作、資訊管理和好友管理三大需求。系統(tǒng)功能結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)功能結(jié)構(gòu)圖
系統(tǒng)采用C/S架構(gòu),服務(wù)器端采用Openfire服務(wù)器,管理服務(wù)器端與客戶端之間的連接和會話;客戶端采用MVC模式構(gòu)建。[4]
在客戶端,使用Android內(nèi)置的SQLite作為本地數(shù)據(jù)庫,存儲系統(tǒng)信息和本地用戶信息,包括好友聊天記錄表、群聊天記錄表、個人信息表等。在服務(wù)器端,使用MySQL,存儲用戶信息、用戶分組和用戶關(guān)系等。
客戶端工作時,向服務(wù)器端發(fā)送請求,通過XMPP協(xié)議獲取服務(wù)。在通信時,通過GPRS網(wǎng)絡(luò),建立雙方的連接。[5]
(1)注冊模塊:實現(xiàn)新用戶的注冊。
(2)登錄模塊:用戶輸入用戶名和密碼,正確則進入系統(tǒng);錯誤則提示用戶名不存在或密碼錯誤。
(3)會話操作模塊:進行文字聊天、圖片聊天、語音聊天、視頻聊天等,還可以傳送文件。
(4)資訊管理模塊:添加、刪除、查詢各類校園資訊。
(5)好友管理模塊:添加、刪除、查詢好友。
會話操作,可以是單聊,也可以是群聊。
(1)文本的發(fā)送。
①獲取會話對象:
EMConversation conversation=EMChatManager.getInstance().getConversation(username);
②創(chuàng)建文本:
EMMessage message=EMMessage.
createSendMessage(EMMessage.Type.TXT);
如果是群聊,應(yīng)做設(shè)置“message.setChatType(ChatType.GroupChat);”
③添加文本消息:
TextMessageBody txtBody=new TextMessage-Body(content);
message.addBody(txtBody);
④設(shè)置接收消息的用戶,把消息加到目標會話對象,發(fā)送消息:
message.setReceipt(username);
conversation.addMessage(message);
EMChatManager.getInstance ().sendMessage(message,new EMCallBack(){});
(2)圖片的發(fā)送。
和文本消息不同的是,在創(chuàng)建圖片時,使用“EMMessage message=EMMessage.createSendMessage(EMMessage.Type.IMAGE);”而在添加圖片時,使用“ImageMessageBody body=new ImageMessage-Body(new File(filePath));”。[6]
(3)語音的發(fā)送。
語音和文本、圖片相似,但創(chuàng)建語音時,參數(shù)使用“EMMessage.Type.VOICE”,添加語音時,使用“VoiceMessageBody”類。[7]
(4)接收消息。
①獲取消息:
先注冊廣播,使用“NewMessageBroadcastReceiver msgReceiver=new NewMessageBroadcastReceiver();”,再編寫 BroadcastReceiver的相應(yīng)方法onReceive():
public void onReceive (Context context,Intent intent){
String msgId=intent.getExtras(“msgid”).toString();
String msgFrom=intent.getExtras(“from”).toString();
int msgType=intent.getIntExtra(“type”,0);
Log.d(“main”,“new message id:”+msgId+“from:”+msgFrom+“type:”+msgType);
EMMessage message=EMChatManager.getInstance().getMessage(msgId);}
②獲取聊天記錄:
EMConversation conversation=EMChatManager.getInstance().getConversation(username|groupid);
List〈EMMessage〉messages=conversation.getAllMessages()
通過資訊模塊,師生可以查看資訊,管理員可以發(fā)送、刪除、修改資訊。
(1)申請資訊閱讀權(quán)限。
EMGroupManager.getInstance().joinGroup
(“easemob-demo#chatdemoui_1431950354833@con ference.easemob.com”);
(2)獲取資訊。
EMGroup group=EMGroupManager.getInstance().getGroup(groupId);//本地資訊
EMGroup group=EMGroupManager.getInstance().getGroup(groupId);//服務(wù)器資訊
(1)獲取好友列表。
環(huán)信支持好友體系,控制發(fā)消息的權(quán)限。[8]需要事先設(shè)置:EMChatManager.getInstance().getChatOptions().setUseRoster(true);
(2)添加好友。
EMContactManager.getInstance ().addContact(toAddUsername,reason);
(3)刪除好友。
EMContactManager.getInstance ().deleteContact(username);
(4)同意好友請求。
EMChatManager.getInstance ().acceptInvitation(username);
(5)拒絕好友請求。
EMChatManager.getInstance ().refuseInvitation(username);
本系統(tǒng)進行了測試,會話、校園資訊運行界面如圖2~3所示。
圖2 會話界面
圖3 校園資訊界面
系統(tǒng)適用于大中專院校學(xué)生,具有校園特色,師生、同學(xué)之間可以無障礙地交流、溝通和互動,傳輸各種圖片、文本和文件,分享校園資訊。操作簡單、功能實用,但在界面美觀和功能拓展上還有待進一步提升。
[1]郭金尚.Android經(jīng)典項目案例開發(fā)實戰(zhàn)寶典[M].北京:清華大學(xué)出版社,2013.
[2]施懿民.Android應(yīng)用測試與調(diào)試實戰(zhàn)[M].北京:機械工業(yè)出版社,2013.
[3]羅雷,韓建文,汪杰.Android系統(tǒng)應(yīng)用開發(fā)實戰(zhàn)詳解[M].北京:人民郵電出版社,2014.
[4]孟賀.基于Android的即時通訊系統(tǒng)的設(shè)計與實現(xiàn)[D].濟南:山東大學(xué),2014.
[5]肖莉.基于P2P校園即時通信系統(tǒng)設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2012.
[6]秦建,鄒凱,邰龍東,朱東亞,林春喜.基于Android的校園移動信息平臺設(shè)計與實現(xiàn)[J].電腦編程技巧與維護,2015(9):54-55.
[7]張夢琦.基于Android平臺的移動智能點餐系統(tǒng)客戶端設(shè)計[J].軟件導(dǎo)刊,2014(5):96-97.
[8]丁永明,紀方明.基于Android平臺移動學(xué)習(xí)軟件的研究與實現(xiàn)[J].數(shù)字通信世界,2011(1):66-68.