• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Android的閱讀回執(zhí)即時(shí)通訊系統(tǒng)的研究和開(kāi)發(fā)

      2018-01-25 03:28:00王玉明陳鈞
      現(xiàn)代計(jì)算機(jī) 2017年36期
      關(guān)鍵詞:群組聊天客戶端

      王玉明,陳鈞

      (南京工程學(xué)院計(jì)算機(jī)工程學(xué)院,南京 211167)

      0 引言

      Android系統(tǒng)占有市場(chǎng)超過(guò)80%的份額,占有更大的用戶基數(shù),世界很多智能手機(jī)廠家?guī)缀醵技尤肓薃n?droid陣營(yíng),并推出了一系列的Android智能機(jī)。終端越多,其市場(chǎng)潛力就越大。從程序的移植和安裝這一角度來(lái)說(shuō),Android應(yīng)用商店最大的優(yōu)勢(shì)是,不對(duì)An?droid應(yīng)用程序的來(lái)源或者提供商進(jìn)行嚴(yán)格的把控。在這一點(diǎn)上優(yōu)于蘋(píng)果。從Android系統(tǒng)自身的而更深層面來(lái)說(shuō),Android平臺(tái)是基于Linux內(nèi)核,具有更佳的可靠和安全,新的Linux內(nèi)核是未來(lái)的發(fā)展趨勢(shì),An?droid開(kāi)發(fā)更是未來(lái)趨勢(shì)[1]。

      本項(xiàng)目的主要任務(wù)是完成在Android平臺(tái)上開(kāi)發(fā)以XMPP協(xié)議為通信協(xié)議的即時(shí)通信應(yīng)用。在項(xiàng)目的研究開(kāi)始階段,首先要求的是Android模擬器上模擬客戶端應(yīng)用程序的運(yùn)行,搭設(shè)Tomcat或者Java程序作為主要通信的服務(wù)器。在項(xiàng)目的后期,豐富功能后,添加設(shè)計(jì)Socket服務(wù)器作為輔助進(jìn)行通信。同時(shí)在設(shè)計(jì)該保證節(jié)約成本,優(yōu)化存儲(chǔ)結(jié)構(gòu),使用客戶端和服務(wù)器一同進(jìn)行存儲(chǔ),避免相同數(shù)據(jù)的冗余和堆積現(xiàn)象。重要的是,對(duì)于聊天信息的閱讀狀況的正確及時(shí)的反饋。

      1 系統(tǒng)相關(guān)技術(shù)

      1.1 Android的相關(guān)組件

      Android開(kāi)發(fā)四大組件分別是:活動(dòng)(Activity):用于提供功能模塊的實(shí)現(xiàn)以及可視化的表現(xiàn)。服務(wù)(Ser?vice):后臺(tái)運(yùn)行服務(wù),對(duì)用戶隱藏,不對(duì)用戶可見(jiàn),不會(huì)和應(yīng)用組件進(jìn)行交互。廣播接收器(Broadcast Re?ceiver):用于接收廣播,異步接受Intent,一類主要是完全異步的接收正常廣播,另外一種是傳播有序廣播。內(nèi)容提供商(Content Provider):主要功能是存儲(chǔ)和傳遞數(shù)據(jù),另一個(gè)重要的功能是對(duì)外數(shù)據(jù)共享。

      1.2 Android的UI的優(yōu)勢(shì)

      Android平臺(tái)兼容多種的媒體格式,并提供相關(guān)插件和版本控制。在部分的按鍵和Viewer上,提供全息樣式和3D的立體圖標(biāo),并且自帶圖片編輯器利用相關(guān)的數(shù)值參數(shù)控制斜度和紋理等特點(diǎn)。另外,Android的UI設(shè)計(jì)采用的是單線程的模型,拒絕在子線程中對(duì)于UI進(jìn)行操作,所以另外提供了Handler的機(jī)制來(lái)進(jìn)行協(xié)調(diào)通信。Handler機(jī)制中的主要對(duì)象是Looper,每一個(gè)線程中只會(huì)存在一個(gè)Looper對(duì)象,與ThreadLocal的思路一致,解決多線程的并發(fā)問(wèn)題。

      2 XMPP協(xié)議

      XMPP協(xié)議是一個(gè)開(kāi)放源碼的,以XML為基礎(chǔ)的可擴(kuò)展的即時(shí)通信協(xié)議,其繼承了XML的靈活的可擴(kuò)展性,以XML數(shù)據(jù)流為載體進(jìn)行數(shù)據(jù)傳輸。其前身是Jabber協(xié)議,在2002年,XMPP工作組開(kāi)發(fā)和改編協(xié)議以適應(yīng)IETF組織的消息和出席技術(shù)后有了目前的XMPP協(xié)議可以說(shuō)協(xié)議是Jabber協(xié)議的核心。XMPP盡管不局限網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),但是通信時(shí)必須采用TCP協(xié)議,在協(xié)議結(jié)構(gòu)上使用的是結(jié)構(gòu)模型,由支持該協(xié)議的服務(wù)器轉(zhuǎn)發(fā)到目標(biāo)用戶,完成此類通訊[3]。

      3 創(chuàng)新點(diǎn)和技術(shù)點(diǎn)

      3.1 消息回執(zhí)的實(shí)現(xiàn)

      在聊天的過(guò)程中,如果消息的接收方在已經(jīng)查看了信息的情況下,應(yīng)該對(duì)于該條的信息的發(fā)送方,給出一個(gè)問(wèn)題的反饋,從而使得發(fā)送方得知,這條消息已經(jīng)被閱讀,從一定程度上,能夠解決問(wèn)題推諉的問(wèn)題。

      其實(shí)現(xiàn)主要是對(duì)于消息包的監(jiān)控。在檢測(cè)到包的相關(guān)內(nèi)部檢測(cè)標(biāo)準(zhǔn)已經(jīng)有了改變的話,通過(guò)成員方法獲得到消息的相關(guān)信息,然后交給服務(wù)端,反饋信息給發(fā)送者。

      3.2 長(zhǎng)鏈接的實(shí)現(xiàn)

      用戶所在客戶端需要不斷地從網(wǎng)絡(luò)上獲取信息,那么就需要解決兩個(gè)問(wèn)題,一個(gè)是判斷當(dāng)前是否鏈接到網(wǎng)絡(luò),另一則就是是否有新的信息需要接受。那么就需要一個(gè)長(zhǎng)鏈接模塊。

      長(zhǎng)鏈接線程會(huì)先檢查網(wǎng)絡(luò)連接的狀態(tài),由內(nèi)部的循環(huán)判斷是否建立過(guò)連接,是否來(lái)連接網(wǎng)絡(luò),連接是否超時(shí),一次來(lái)確定是否連接到網(wǎng)絡(luò)/。建立長(zhǎng)鏈接的過(guò)程,其實(shí)質(zhì)是客戶端向服務(wù)器發(fā)送連接請(qǐng)求,請(qǐng)求服務(wù)器通過(guò)此鏈接向客戶端發(fā)送消息,客戶端維持一個(gè)消息分發(fā)線程,消息調(diào)用不同的處理過(guò)程

      另外,如果想保持websocket連接的穩(wěn)定性,建議加上心跳包。可以每隔一段時(shí)間就發(fā)個(gè)簡(jiǎn)單的字符串給后臺(tái),讓后臺(tái)知道用戶在線,可以調(diào)用timetask以及CountDownTimer來(lái)完成。

      4 系統(tǒng)模塊的設(shè)計(jì)與實(shí)現(xiàn)

      4.1 系統(tǒng)總體框架的實(shí)現(xiàn)

      參照MVC(Model View Controller,模型—視圖—控制器)的架構(gòu)設(shè)計(jì)模式,可以達(dá)到將業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的結(jié)構(gòu)形式??梢园堰@個(gè)系統(tǒng)分為如下的幾個(gè)功能層次:數(shù)據(jù)庫(kù)層(Model層),表現(xiàn)層(View層),業(yè)務(wù)處理層(Controller層),網(wǎng)絡(luò)通信層(網(wǎng)絡(luò)業(yè)務(wù)的處理層)。根據(jù)不同的業(yè)務(wù)要求,每一個(gè)層次同樣具有不同的模塊,每個(gè)模塊都具備各自的功能。

      注意點(diǎn)主要集中在,需要固定層與層之間的通信接口,能夠清楚明白的描述層次和功能。有專業(yè)的要求盡量做到“高內(nèi)聚,低耦合”,在層次的內(nèi)部應(yīng)該模塊化,盡可能的降低模塊與模塊之間的聯(lián)系。同時(shí)要保證,接口的調(diào)用清晰明了。

      4.2 客戶端的功能模塊與設(shè)計(jì)

      針對(duì)此次對(duì)于通訊軟件的設(shè)計(jì)要求,盡量將軟件的使用的模塊簡(jiǎn)化,大致包括以下的模塊:登錄注冊(cè)模塊、主界面顯示模塊、好友管理模塊、群組管理模塊、聊天模塊、個(gè)性化設(shè)置模塊等。每個(gè)模塊負(fù)責(zé)具體的不同的功能。

      (1)用戶注冊(cè)界面:在新用戶要求注冊(cè)時(shí),提供界面要求用戶對(duì)于昵稱、密碼、email信息進(jìn)行填寫(xiě),并且在提交之前進(jìn)行檢驗(yàn),滿足全部要求的才能注冊(cè)到服務(wù)器中保存。保存剛注冊(cè)的賬號(hào)和密碼,方便及時(shí)登錄。

      (2)用戶登錄界面:在用戶登錄時(shí),檢測(cè)賬號(hào)、密碼是否正確進(jìn)行匹配,判斷賬號(hào)是否的格式、內(nèi)容輸入有誤,判斷該賬號(hào)有沒(méi)有存在共同登錄或者異地登錄的情況。

      (3)好友管理模塊:進(jìn)行好友的管理,功能要求要能夠進(jìn)行添加好友、刪除好友、修改好友備注和分組等的操作,在這些操作之后,需要將修改的內(nèi)容存儲(chǔ)到本地或者是遠(yuǎn)程的數(shù)據(jù)庫(kù)。

      (4)群組管理模塊:進(jìn)行群組的管理,功能要求要能夠進(jìn)行創(chuàng)建群組、刪除群組、邀請(qǐng)好友、修改群組信息等。同時(shí)這些信息要注意管理員與普通用戶之間的權(quán)限的不同。

      (5)主界面模塊:負(fù)責(zé)多個(gè)功能之間的切換。通過(guò)左劃、右劃以及對(duì)提供的工具欄的操作方式實(shí)現(xiàn)。以此來(lái)完成多個(gè)不同的模塊的功能的集合。同時(shí)要能夠顯示用戶的頭像,個(gè)性簽名,呈現(xiàn)狀態(tài)以及最近的聊天界面等狀態(tài)。但是同樣這些功能有的是平行的功能,有的是作為承載在主界面是上面的應(yīng)用。如聊天管理界面圖1。

      由此也是所有的activity中布局最為復(fù)雜的一種,通過(guò)添加TextView,Button,ProgressBar等常用控件來(lái)編寫(xiě)程序界面。主界面下需要防止多個(gè)聊天的窗口。主要的監(jiān)控就要交給后臺(tái)功能。Service不能自己運(yùn)行,只能后臺(tái)運(yùn)行,并且可以和其他組件進(jìn)行交互。但是主界面一定存在相當(dāng)?shù)暮臅r(shí)操作,像需要發(fā)送網(wǎng)絡(luò)請(qǐng)求的時(shí)候,服務(wù)器未必會(huì)立刻的給出回復(fù),如果不交給子線程,會(huì)導(dǎo)致主線程被阻塞,從而程序和用戶體驗(yàn)。

      聊天模塊:負(fù)責(zé)對(duì)于聊天的支持,對(duì)聊天的內(nèi)容進(jìn)行處理。能群聊、單聊,能添加表情等。聊天記錄一樣能夠在本地端進(jìn)行存儲(chǔ),并且全部都以聊天窗口的形式顯示出來(lái)。主要的個(gè)人聊天界面,如圖2。

      圖1 聊天管理界面

      圖2 個(gè)人聊天界面

      功能設(shè)置模塊:主要對(duì)應(yīng)用進(jìn)行功能性設(shè)置,包括個(gè)人設(shè)置和系統(tǒng)設(shè)置。此類的系統(tǒng)配置屬于用戶對(duì)于Android的個(gè)性化配置,可以使用Android的Shared?Preferences功能,它是一個(gè)輕量級(jí)的存儲(chǔ)類,所以很適合用于保存軟件配置參數(shù)。通過(guò)XML文件存放數(shù)據(jù),文件存放在本地安裝目錄下的/data/data//shared_prefs目錄下。

      4.3 系統(tǒng)的用例分析

      依據(jù)上面一個(gè)模塊對(duì)于功能模塊的分析結(jié)果,下面給出相關(guān)的用例圖,圖3。

      從圖中可以看出,用戶需要先行注冊(cè)成為用戶,將其注冊(cè)的相關(guān)信息包括密碼賬號(hào)等,保存在數(shù)據(jù)庫(kù),其次登錄客戶端,在這樣的情況下,用戶就可以查詢聊天記錄。查看發(fā)送的圖片或者文件等的操作,但是想進(jìn)行單人聊天,群聊天需要先連接到服務(wù)器。

      圖3 功能模塊的用例分析圖

      4.4 系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)

      在設(shè)計(jì)本課題系統(tǒng)時(shí),需要考慮到數(shù)據(jù)的保存和可重復(fù)多次讀取的相關(guān)措施。Android本身有提供5中數(shù)據(jù)的存儲(chǔ)方式。第一種是SharedPreferences主要是用于存儲(chǔ)一些簡(jiǎn)單的系統(tǒng)配置的信息,優(yōu)點(diǎn)在于簡(jiǎn)單快捷的讀取和寫(xiě)入方式。第二種是通過(guò)文件存儲(chǔ)數(shù)據(jù),利用和Java一致的文件輸入輸出流實(shí)現(xiàn)。第三種是網(wǎng)絡(luò)存儲(chǔ)方式,主要是解決Android網(wǎng)絡(luò)數(shù)據(jù)包的問(wèn)題。第四種就是組件之一的ContentProvider。第四種是利用開(kāi)發(fā)的數(shù)據(jù)庫(kù)SQLite。

      本課題系統(tǒng)的設(shè)計(jì)架構(gòu)是C/S架構(gòu),為了降低數(shù)據(jù)的大量冗余,和堆積在服務(wù)器影響性能的問(wèn)題,需要在服務(wù)器和客戶端上面同事的存儲(chǔ)數(shù)據(jù)。服務(wù)器主要利用輕型的mysql數(shù)據(jù)庫(kù)進(jìn)行處理??蛻舳藢⑸倭康南到y(tǒng)配置信息,例如用戶名和密碼,用戶的私人配置等信息保存在SharedPreferences中,主要還是通過(guò)SQLite進(jìn)行保存。

      本項(xiàng)目主要的數(shù)據(jù)庫(kù)表有User用戶信息表、Con?tacts:聯(lián)系人列表、Single_session單人會(huì)話列表、Sin?gle_message單人聊天信息表、Group_session多人會(huì)話列表、Group_message多人聊天信息表。

      以下是聊天系統(tǒng)的ER圖:

      圖4 聊天系統(tǒng)ER圖

      5 結(jié)語(yǔ)

      本系統(tǒng)主要使用Java語(yǔ)言開(kāi)發(fā),通過(guò)原型設(shè)計(jì),數(shù)據(jù)庫(kù)設(shè)計(jì),已完成基本的閱讀回執(zhí)功能,即時(shí)反饋已讀動(dòng)態(tài)以及對(duì)重要的信息做出提醒,有一定的實(shí)用性。根據(jù)我們對(duì)于國(guó)內(nèi)外研究現(xiàn)狀、發(fā)展水平的分析了解,本系統(tǒng)開(kāi)發(fā)成本低廉,效率高,擴(kuò)展性好。

      [1]呂留記.基于Android的即時(shí)通訊系統(tǒng)的研究與實(shí)現(xiàn)[D].電子科技大學(xué),2016.

      [2]王少蕾.安全通信軟件“密迅”的Android手機(jī)客戶端的設(shè)計(jì)與實(shí)現(xiàn)[D].北京交通大學(xué),2014.

      [3]高明鵬.基于XMPP協(xié)議的Android手機(jī)即時(shí)通信應(yīng)用研究與實(shí)現(xiàn)[D].南昌大學(xué),2012.

      [4]郝秋影.基于Android的消息應(yīng)用的設(shè)計(jì)與實(shí)現(xiàn)[D].北京郵電大學(xué),2013.

      猜你喜歡
      群組聊天客戶端
      關(guān)系圖特征在敏感群組挖掘中的應(yīng)用研究
      縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
      孵化垂直頻道:新聞客戶端新策略
      基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
      我就是不想跟你聊天了
      意林(2017年9期)2017-06-06 10:26:12
      敞開(kāi)門(mén)聊天
      基于統(tǒng)計(jì)模型的空間群組目標(biāo)空間位置計(jì)算研究
      客戶端空間數(shù)據(jù)緩存策略
      群組聊天業(yè)務(wù)在IMS客戶端的設(shè)計(jì)與實(shí)現(xiàn)
      聊天不倒王
      米林县| 壤塘县| 淮安市| 五大连池市| 顺平县| 斗六市| 池州市| 衡山县| 精河县| 芮城县| 北票市| 桦南县| 巴彦县| 阿鲁科尔沁旗| 丽水市| 奈曼旗| 西城区| 简阳市| 台南县| 茶陵县| 家居| 浪卡子县| 海林市| 互助| 镇远县| 原阳县| 山阴县| 墨玉县| 防城港市| 东台市| 咸阳市| 沈丘县| 包头市| 宜宾市| 淄博市| 准格尔旗| 比如县| 福安市| 景泰县| 霞浦县| 龙南县|