国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android平臺(tái)的即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2016-04-25 11:42:35楊瑩
中國(guó)科技博覽 2016年2期
關(guān)鍵詞:Android平臺(tái)通信協(xié)議

楊瑩

[摘 要]本文在開(kāi)源服務(wù)器軟件 Openfire 及和 Android 平臺(tái)上設(shè)計(jì)了基于XMPP 協(xié)議的即時(shí)通信系統(tǒng);實(shí)現(xiàn)了即時(shí)通訊、好友添加、圖片瀏覽、音樂(lè)播放、好友瀏覽等基本功能。所實(shí)現(xiàn)的系統(tǒng)功能完善,可為個(gè)人或企業(yè)搭建自己的即時(shí)通信系統(tǒng),用于解決內(nèi)部數(shù)據(jù)傳輸安全,實(shí)現(xiàn)了與其他通信系統(tǒng)互通等問(wèn)題提出了可行性高的解決方案。

[關(guān)鍵詞]Android平臺(tái),XMPP 通信協(xié)議,Openfire服務(wù)器,即時(shí)通信系統(tǒng)

中圖分類(lèi)號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-914X(2016)02-0179-03

引言

21世紀(jì),即時(shí)通信系統(tǒng)作為一種新興的技術(shù)獲得了突飛猛進(jìn)的發(fā)展。即時(shí)通信(IM,Instant Messaging)是一種基于現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)通信技術(shù)的能夠即時(shí)發(fā)送和接收互聯(lián)網(wǎng)消息的交互方式。用戶(hù)可以通過(guò) Android 平臺(tái)支撐的即時(shí)通信系統(tǒng)軟件實(shí)現(xiàn)不同手機(jī)用戶(hù)之間以及手機(jī)與電腦網(wǎng)絡(luò)之間的視頻、音頻和文字等各種信息的即時(shí)交互通訊,以及移動(dòng)終端之間點(diǎn)對(duì)點(diǎn)的信息交流與各種數(shù)據(jù)交換。

這些IM 系統(tǒng)豐富了我們的生活,給普通用戶(hù)之間的低費(fèi)用通訊帶來(lái)了極大方便,但同時(shí)帶來(lái)了新的技術(shù)和保密問(wèn)題。XMPP 協(xié)議是開(kāi)源協(xié)議,具有超強(qiáng)的擴(kuò)展性和靈活性,也有成本低、研究和實(shí)現(xiàn)方便等優(yōu)勢(shì),因而,對(duì) XMPP 協(xié)議在該領(lǐng)域的研究有利于降低移動(dòng)平臺(tái)IM 實(shí)現(xiàn)的難度,為有類(lèi)似需求的中小型企業(yè)提供一個(gè)低成本的解決方案。為此,本文中采用XMPP協(xié)議實(shí)現(xiàn)移動(dòng)平臺(tái)系統(tǒng),以滿(mǎn)足產(chǎn)品自身的需要。

1 系統(tǒng)開(kāi)發(fā)關(guān)鍵技術(shù)分析

1. Android平臺(tái)架構(gòu)分析

Android一詞的本義指“機(jī)器人”,是一個(gè)移動(dòng)設(shè)備的軟件平臺(tái)。它提供包括:SDK、Key Apps、Middleware、Linux Kernel四個(gè)部分在內(nèi)的開(kāi)源手機(jī)操作系統(tǒng)。它開(kāi)放了基于內(nèi)核以上的開(kāi)發(fā)工具,從而保證了內(nèi)容的可移植性和多樣性,為系統(tǒng)開(kāi)發(fā)者開(kāi)發(fā)應(yīng)用程序提供了一套很好的框架,用戶(hù)可以在這個(gè)平臺(tái)的基礎(chǔ)上開(kāi)發(fā)不同的應(yīng)用程序,也可以開(kāi)發(fā)新的組件供應(yīng)用程序調(diào)用。

1.1 Android 系統(tǒng)層次結(jié)構(gòu)

如圖1所示,Android的架構(gòu)是由:Linux內(nèi)核、/C++函數(shù)庫(kù)、Dalvik虛擬機(jī)、應(yīng)用框架以及關(guān)鍵應(yīng)用程序構(gòu)成的,通過(guò)編譯基于框架的應(yīng)用程序可以降低開(kāi)發(fā)負(fù)荷應(yīng)用軟件原則上是在Dalvik VM上運(yùn)行的。

1).關(guān)鍵應(yīng)用程序

Android平臺(tái)內(nèi)包含一些關(guān)鍵應(yīng)用程序,如:郵件收發(fā)客戶(hù)端程序、短信收發(fā)程序、日歷和網(wǎng)頁(yè)瀏覽器等。

2)應(yīng)用程序框架

Android應(yīng)用程序的開(kāi)發(fā)基于框架和組件。Android本身己在其框架中提高了許多的組件供應(yīng)用程序調(diào)用,當(dāng)然開(kāi)發(fā)者也開(kāi)放新的組件,并將組件放入應(yīng)用程序框架中,以供自己和其它應(yīng)用程序調(diào)用。

3)C/C++函數(shù)庫(kù)

Android應(yīng)用程序框架之下是一套C/C++函數(shù)庫(kù),它們服務(wù)于Andrei應(yīng)用程序組件,其功能通過(guò)組件間接提供給開(kāi)發(fā)者。

4)Java程序運(yùn)行環(huán)境

Android的Java程序運(yùn)行環(huán)境包含一組Java核心函數(shù)庫(kù)及Dalvik虛擬機(jī),它們有效地優(yōu)化了Java程序的運(yùn)行過(guò)程。

5)Linux內(nèi)核

Android系統(tǒng)平臺(tái)是基于優(yōu)化了的Linux內(nèi)核,是其系統(tǒng)平臺(tái)的核心。它提供諸如內(nèi)存管理、進(jìn)程管理、設(shè)備驅(qū)動(dòng)等服務(wù),同時(shí)也是手機(jī)軟硬件的連接層,提供了一個(gè)屏蔽層用于屏蔽硬件和上層軟件。

1.2 Android應(yīng)用的構(gòu)成和工作機(jī)制

對(duì)于一個(gè)Android應(yīng)用程序來(lái)說(shuō),是由Activity、IntentReceiver、Serviee、ContentProvider四部分組成,但并不是每一個(gè)Android應(yīng)用程序都必須由這四部分組成。在應(yīng)用程序中使用時(shí),需要在配置文件AndroidMainfest.xd中進(jìn)行配置,這個(gè)配置文件是每個(gè)Android應(yīng)用程序所必需的,用于定義應(yīng)用程序的組件、組件的功能以及必要條件等,其中:

1) Activity組件,主要負(fù)責(zé)創(chuàng)建與用戶(hù)進(jìn)行交互的顯示窗口,用戶(hù)可以在這些窗口里通過(guò)調(diào)用SetContentView(View)方法來(lái)顯示其用戶(hù)界面;

2) IntentReceive組件,用于對(duì)外部事件的響應(yīng),當(dāng)外部事件發(fā)生時(shí),會(huì)使用NotifieationManager通知用戶(hù)。如在本系統(tǒng)中,當(dāng)用戶(hù)正在其它界面進(jìn)行操作時(shí),有好友發(fā)送消息過(guò)來(lái),就會(huì)以通知的形式發(fā)送到當(dāng)前界面的正上方來(lái)通知用戶(hù)。

3) Service組件是不帶UI提供連續(xù)信息的應(yīng)用程序。本系統(tǒng)客戶(hù)端擴(kuò)展功能的音樂(lè)播放就是采用Service來(lái)進(jìn)行設(shè)計(jì)和開(kāi)發(fā)的,使用戶(hù)可以邊聊天邊聽(tīng)音樂(lè)。

4) ContentProvider應(yīng)用程序組件能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件、SQL數(shù)據(jù)庫(kù)和其它的存儲(chǔ)設(shè)備中。使用ContentProvider能夠靈活的替換底層使用的存儲(chǔ)設(shè)備,使開(kāi)發(fā)者可以專(zhuān)著于應(yīng)用邏輯的開(kāi)發(fā),不用考慮底層存儲(chǔ)設(shè)備的細(xì)節(jié),從而使應(yīng)用系統(tǒng)具有良好的數(shù)據(jù)遷移性。

2 XMPP 協(xié)議基礎(chǔ)

XMPP協(xié)議(Extensible Messaging and Presence Protocol,可擴(kuò)展消息處理現(xiàn)場(chǎng)協(xié)議)是一種基于XML的協(xié)議,目的是為了解決及時(shí)通信標(biāo)準(zhǔn)而提出來(lái)的。它繼承了在XML環(huán)境中靈活的發(fā)展性,因此,基于XMPP的應(yīng)用具有超強(qiáng)的可擴(kuò)展性。經(jīng)過(guò)擴(kuò)展以后的XMPP可以通過(guò)發(fā)送擴(kuò)展的信息來(lái)處理用戶(hù)的需求,以及在XMPP的頂端建立如內(nèi)容發(fā)布系統(tǒng)和基于地址的服務(wù)等應(yīng)用程序。而且,XMPP包含了針對(duì)服務(wù)器端的軟件協(xié)議,使之能與另一個(gè)進(jìn)行通話,這使得開(kāi)發(fā)者更容易建立客戶(hù)應(yīng)用程序或給一個(gè)配好系統(tǒng)添加功能。

XMPP中定義了三個(gè)角色:客戶(hù)端、服務(wù)器、網(wǎng)關(guān)。通信能夠在這三者的任意兩個(gè)之間雙向發(fā)生。服務(wù)器同時(shí)承擔(dān)了客戶(hù)端信息記錄,連接管理和信息的路由功能。網(wǎng)關(guān)承擔(dān)著與異構(gòu)即時(shí)通信系統(tǒng)的互聯(lián)互通,異構(gòu)系統(tǒng)可以包括SMS(短信),MSN,ICQ等?;镜木W(wǎng)絡(luò)形式是單客戶(hù)端通過(guò)TCP/IP連接到單服務(wù)器,然后在之上傳輸XML。

XMPP的基本網(wǎng)絡(luò)結(jié)構(gòu)如下:

C1----S1---S2---C3

C2----+--G1===FN1===FC1

符號(hào)表示:C1,C2,C3=XMPP客戶(hù)端;S1,S2=XMPP;服務(wù)端G1=在XMPP和使用外部消息網(wǎng)絡(luò)(非XMPP)的協(xié)議之間轉(zhuǎn)換的網(wǎng);FN1=外部消息網(wǎng)絡(luò);FC1=外部消息網(wǎng)絡(luò)的客戶(hù)端。

1)服務(wù)器

服務(wù)系統(tǒng)是XMPP通信的智能提取層,它主要負(fù)責(zé):管理來(lái)自其他個(gè)體的會(huì)話連接或者XML流(streams)和來(lái)自客戶(hù)端、服務(wù)器、其他個(gè)體的認(rèn)證發(fā)送在XML流實(shí)體之中的適當(dāng)?shù)腦ML地址節(jié)點(diǎn)。

2)客戶(hù)端

大多數(shù)客戶(hù)端是通過(guò)TCP直接連接,并且使用XMPP獲得服務(wù)器提供全部Jabber協(xié)議原理及其應(yīng)用功能和其他服務(wù)。

3)網(wǎng)關(guān)

它的主要功能是將XMPP協(xié)議轉(zhuǎn)換成外部消息(non-XMPP)系統(tǒng)使用的協(xié)議,也將返回的數(shù)據(jù)轉(zhuǎn)換成XMPP。這些通信是基于網(wǎng)關(guān)和服務(wù)器,基于網(wǎng)關(guān)和外部消息系統(tǒng)之間的。

3 基于Android平臺(tái)的即時(shí)通訊系統(tǒng)

本系統(tǒng)采用C/S體系結(jié)構(gòu)〕,采用開(kāi)源的XMPP作為即時(shí)通訊協(xié)議,通過(guò)GPRS無(wú)線網(wǎng)絡(luò)采用TCP協(xié)議連接到服務(wù)器,通過(guò)架設(shè)開(kāi)源的Openfire服務(wù)器作為即時(shí)通訊平臺(tái),實(shí)現(xiàn)客戶(hù)端與客戶(hù)端之間的即時(shí)通訊。

3.1 系統(tǒng)概述

本文是在Android平臺(tái)上開(kāi)發(fā)即時(shí)手機(jī)通訊系,它能夠使用戶(hù)在手機(jī)上方便的、迅捷的收發(fā)及時(shí)消息、傳輸圖片。此外,根據(jù)現(xiàn)今用戶(hù)對(duì)于即時(shí)通訊軟件的特殊要求,比如:在聊天的基礎(chǔ)之上還要有一些增值服務(wù)功能,以滿(mǎn)足不同用戶(hù)的需求。根據(jù)這些特點(diǎn),本系統(tǒng)除了即時(shí)文本消息和圖片的傳輸外,還實(shí)現(xiàn)了音樂(lè)播放和圖片瀏覽的功能,讓用戶(hù)可以邊聊天邊聽(tīng)音樂(lè),可以對(duì)好友傳送過(guò)來(lái)的圖片隨時(shí)進(jìn)行瀏覽,從而實(shí)現(xiàn)即時(shí)通訊系統(tǒng)的功能多樣化。

3.2 系統(tǒng)架構(gòu)

如圖3所示,本系統(tǒng)采用客戶(hù)端(C)/ 服務(wù)端(S)架構(gòu)的體系結(jié)構(gòu),具有服務(wù)器端和客戶(hù)端。

服務(wù)器端:采用基于XMPP協(xié)議的實(shí)時(shí)協(xié)作IM跨平臺(tái)服務(wù)器---開(kāi)源的Openfire服務(wù)器,為提供客戶(hù)端進(jìn)行會(huì)話連接、消息轉(zhuǎn)發(fā)、認(rèn)證及后臺(tái)管理功能。

客戶(hù)端:用戶(hù)間的通訊是通過(guò)服務(wù)器的轉(zhuǎn)發(fā)來(lái)實(shí)現(xiàn)的,將信息打包成XML文件發(fā)送給服務(wù)器,然后服務(wù)器將其轉(zhuǎn)發(fā)給相應(yīng)的用戶(hù)。在Asmack庫(kù)的支持下,XMPP的客戶(hù)端的登錄,認(rèn)證,消息收發(fā)等基本功能需要重寫(xiě)相應(yīng)函數(shù),并調(diào)用相應(yīng)接口來(lái)實(shí)現(xiàn)。

客戶(hù)端采用MVC的軟件結(jié)構(gòu)。采用Android的XML文件對(duì)界面進(jìn)行描述,作為視圖層,負(fù)責(zé)前臺(tái)界面的顯示;Android的Activity活動(dòng)類(lèi)承載了控制層的任務(wù),通過(guò)Activity進(jìn)行邏輯業(yè)務(wù)處理;而對(duì)于數(shù)據(jù)庫(kù)和與服務(wù)器連接的操作則屬于Model層,該層在具體設(shè)計(jì)上則依賴(lài)于自定義的服務(wù)類(lèi)。

4 本即時(shí)通訊系統(tǒng)的具體設(shè)計(jì)與實(shí)現(xiàn)

4.1 本系統(tǒng)主要界面

本系統(tǒng)為客戶(hù)端/服務(wù)器端的系統(tǒng)架構(gòu),服務(wù)器端由基于Jabber技術(shù)的開(kāi)源服務(wù)器Openfire和MySQL數(shù)據(jù)庫(kù)共同構(gòu)成。其中,Openfire服務(wù)器負(fù)責(zé)處理所有用戶(hù)的請(qǐng)求、訪問(wèn)數(shù)據(jù)庫(kù)和消息的傳遞;而客戶(hù)端是基于Andrnid平臺(tái)開(kāi)發(fā)的,負(fù)責(zé)連接并登錄服務(wù)器,通過(guò)服務(wù)器來(lái)實(shí)現(xiàn)客戶(hù)端與客戶(hù)端或PC機(jī)客戶(hù)端之間的即時(shí)通訊。

1.Openfire服務(wù)器管理界面

如圖4所示,通過(guò)該管理界面,管理員可以方面的管理用戶(hù)的會(huì)話連接,服務(wù)器安全設(shè)置,以及用戶(hù)信息等。

2)用戶(hù)注冊(cè)登錄界面。

輸入用戶(hù)名密碼后點(diǎn)擊登錄,客戶(hù)端向服務(wù)器端發(fā)起login請(qǐng)求,登錄成功后,客戶(hù)端會(huì)將自己的Presence的狀態(tài)置為available并發(fā)送給服務(wù)器,表示當(dāng)前用戶(hù)在線。不當(dāng)對(duì)于登錄成功的用戶(hù)具有:瀏覽好友、圖片瀏覽、音樂(lè)播放及添加好友等功能模塊。

3)圖片瀏覽功能:在本模塊中,合法用戶(hù)不僅可以實(shí)現(xiàn)本地圖片的瀏覽功能,而且對(duì)于選中的圖片還可以實(shí)現(xiàn)圖片的自動(dòng)縮放功能,以便于用戶(hù)更好地閱讀圖片。

4)音樂(lè)播放界面:音頻主界面主要是通過(guò)一個(gè)XML布局文件實(shí)現(xiàn)的,我們把它命名為music.xml,這里采用相對(duì)布局和線性布局相結(jié)合的方法。

5)即時(shí)通訊模塊

如圖5所示,本系統(tǒng)即時(shí)通訊模塊集成了與好友之間的各種通訊方式,有普通的文本通訊、文件傳輸、留言錄音通訊、語(yǔ)音通話功能。

4.2 文件傳輸模塊的具體實(shí)現(xiàn)

在本系統(tǒng)功能實(shí)現(xiàn)過(guò)程中涉及到的文件傳輸分為:發(fā)送端和接收端。發(fā)送端主要通過(guò)sendFile()進(jìn)行文件的發(fā)送,兩個(gè)參數(shù)分別為path和msg,path代表文件路徑,而msg代表伴隨文件傳輸?shù)钠胀ㄎ谋拘畔?。Msg中包含著文件名、文件路徑等信息。然后創(chuàng)建FileTransferManager,并創(chuàng)建一個(gè)輸出文件TransFer,調(diào)用其sendFile方法將文件發(fā)送出去,同時(shí)啟動(dòng)新線程用來(lái)對(duì)文件發(fā)送狀態(tài)進(jìn)行更新。

文件接收端也是需要?jiǎng)?chuàng)建FileTransferManager,然后通過(guò)addFileTransferListener方法設(shè)置文件監(jiān)聽(tīng),當(dāng)有文件傳輸時(shí),而且同意接收后,則通過(guò)IncomingFileTransfer來(lái)接收文件,并存入默認(rèn)的目錄中去。

5 結(jié)論

本即時(shí)通訊系統(tǒng)主要來(lái)用C/S的軟件架構(gòu),并釆用XMPP協(xié)議作為即時(shí)通訊基本功能的通信協(xié)議,服務(wù)器端采用開(kāi)源的Openfire服務(wù)器,客戶(hù)端釆用了基于Android的開(kāi)發(fā)平臺(tái)。除了即時(shí)文本信息的傳輸外,還可以進(jìn)行圖片的傳輸,將IDEA數(shù)據(jù)加密算法引入系統(tǒng)中,對(duì)系統(tǒng)的通訊信息進(jìn)行加密處理,保證通訊數(shù)據(jù)的安全,并對(duì)系統(tǒng)客戶(hù)端的功能進(jìn)行了擴(kuò)展,增加了音樂(lè)的播放和圖片瀏覽的功能。

參考文獻(xiàn)

[1] 李新路.XMPP協(xié)議在Android即時(shí)通訊系統(tǒng)中的應(yīng)用[J].電腦知識(shí)與技術(shù),2013,(28)

[2] 羅偉.基于Android平臺(tái)的即時(shí)通訊系統(tǒng)的研究與實(shí)現(xiàn)[D].湖南師范大學(xué),2009

[3] 黃偉敏.基于XMPP協(xié)議的Android即時(shí)通信系統(tǒng)設(shè)計(jì)[J]電子設(shè)計(jì)工@,2011,19(8)

[4] 陳航,趙方.基于服務(wù)器推送技術(shù)和XMPP的Web IM系統(tǒng)實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè),2010,31(5)

[5] Matos V, Grasser R. Building applications for the Android OS mobile platform: a primer and course materials[J]. Journal of Computing Sciences in Colleges, 2010, 26(1): 23-29.

[6] 羅偉. 基于 Android 平臺(tái)的即時(shí)通訊系統(tǒng)的研究與實(shí)現(xiàn) [D][D]. 長(zhǎng)沙: 湖南師范大學(xué), 2009.

[7] 孟賀. 基于 Android 的即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 山東大學(xué), 2014.

猜你喜歡
Android平臺(tái)通信協(xié)議
DCS本地總線通信協(xié)議與FFH1設(shè)備互操作技術(shù)研究與實(shí)現(xiàn)
電子計(jì)算機(jī)聯(lián)鎖系統(tǒng)通信協(xié)議設(shè)計(jì)和應(yīng)用
基于Z-Stack通信協(xié)議棧的紅外地溫采集電路設(shè)計(jì)
基于Android平臺(tái)軟件開(kāi)發(fā)技術(shù)研究
科技資訊(2016年25期)2016-12-27 18:46:40
基于Android平臺(tái)的人臉識(shí)別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于Android平臺(tái)的健康醫(yī)療APP設(shè)計(jì)與開(kāi)發(fā)
Android手機(jī)主題設(shè)計(jì) 
基于Android的Python語(yǔ)言英漢維電子詞典設(shè)計(jì)與實(shí)現(xiàn)
Android平臺(tái)下的空氣質(zhì)量和天氣情況查詢(xún)應(yīng)用設(shè)計(jì)與實(shí)現(xiàn)
基于DMX512通信協(xié)議的多路轉(zhuǎn)發(fā)器設(shè)計(jì)與研究
荣昌县| 玛纳斯县| 胶州市| 遵义市| 洪雅县| 龙井市| 江源县| 南华县| 长汀县| 洛南县| 永安市| 大埔县| 日土县| 牙克石市| 德江县| 嘉峪关市| 恭城| 开阳县| 阿拉善左旗| 寿光市| 望谟县| 汕尾市| 桂东县| 延津县| 九江市| 翼城县| 宣威市| 远安县| 扶余县| 任丘市| 皮山县| 金塔县| 武平县| 兴义市| 二连浩特市| 连平县| 策勒县| 泰宁县| 太仓市| 达拉特旗| 龙江县|