• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    陌生人—移動社交網(wǎng)絡(luò)應(yīng)用App設(shè)計

    2016-06-16 20:15:20王狄
    電腦知識與技術(shù) 2016年10期
    關(guān)鍵詞:服務(wù)器端開源陌生人

    王狄

    摘要:該系統(tǒng)旨在實現(xiàn)兩部分功能。即通過解密陌生人客戶端讓用戶實現(xiàn)搖一搖在地圖上顯示好友進(jìn)行互動添加。和提供豐富的交流手段如語音,圖片等使用戶更為便捷的通訊。同時采取多進(jìn)程的方式,主進(jìn)程為前臺進(jìn)程,輔進(jìn)程為后臺推送進(jìn)程以達(dá)到在客戶將程序退出時仍然能夠從服務(wù)器端獲取信息。通過定義單獨的服務(wù)類來處理和openfire服務(wù)器的連接問題從而實現(xiàn)解耦。通過定義單獨的manager類來提供與即時通訊相關(guān)的方法實現(xiàn)解耦。通過維護(hù)全局的application類來提供某些常用方法以實現(xiàn)解耦。

    關(guān)鍵詞:設(shè)計;系統(tǒng)

    中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)10-0092-02

    1 緒論

    1.1 開發(fā)背景及意義

    隨著人們的生活的豐富化,社交軟件成為生活中必不可少的一部分,但是近些年新興起的基于陌生人之間通訊的社交軟件卻越來越火爆,陌陌就是其典型的代表。隨著陌陌的上市,SoLoMoGlo(Social + Local + Mobile + Global)的概念也在持續(xù)升溫,成為大學(xué)生創(chuàng)業(yè)的選擇之一。本項目通過游戲的形式完成陌生人之間的交友,進(jìn)而實現(xiàn)基于陌生人的社交通訊。

    1.2 開發(fā)目標(biāo)

    SoLoMoGlo(Social + Local + Mobile + Global)概念這些年中持續(xù)發(fā)酵,基于移動社交的商業(yè)模式層出不窮,相關(guān)產(chǎn)品眾多。

    2 陌生人-移動社交網(wǎng)絡(luò)App設(shè)計概述

    2.1 設(shè)計目標(biāo)

    1) 新用戶可以直接點擊注冊按鈕來進(jìn)行注冊,注冊完成后自動登陸。

    2)登陸后可以點擊側(cè)滑菜單中的搖一搖進(jìn)行好友的添加。

    3)添加好友成功后可以直接進(jìn)行文字語音的聊天并可分享圖片。

    4)點擊側(cè)滑菜單中的我的信息查看當(dāng)前登陸賬號的信息。

    5)聯(lián)系人界面或者聊天界面點擊好友頭像可查看好友的具體信息。

    2.2 模塊劃分

    3.3 詳細(xì)設(shè)計

    3.1 系統(tǒng)總體層次設(shè)計

    本系統(tǒng)采取了C/S軟件架構(gòu),即大家所熟知的客戶端/服務(wù)器體系結(jié)構(gòu),通過將任務(wù)分配到Client端與Server端從而降低了系統(tǒng)通訊的開銷。

    服務(wù)器端采用了開源的Openfire服務(wù)器,Openfire采用Java開發(fā),基于XMPP的實時協(xié)作的IM跨平臺服務(wù)器。Openfire還提供了完善的后臺管理功能,可以更加方便的管理系統(tǒng)用戶。

    而在客戶端中,用戶間的通訊是通過服務(wù)器的轉(zhuǎn)發(fā)來實現(xiàn)的,將信息打包成XML文件發(fā)送給服務(wù)器,然后服務(wù)器轉(zhuǎn)發(fā)給相應(yīng)的用戶。在ASmack庫的支持下,XMPP客戶端的登陸,消息收發(fā)等基本功能需要重寫相應(yīng)的函數(shù),并且調(diào)用相應(yīng)的接口來實現(xiàn)。

    客戶端采用MVC的軟件架構(gòu),采用Android的XML文件對界面進(jìn)行描述,作為視圖層V(View),負(fù)責(zé)前臺界面的顯示;Activity活動類承載了控制層C(Controller)的任務(wù),通過Activity進(jìn)行邏輯業(yè)務(wù)的處理;對于處理數(shù)據(jù)庫與處理服務(wù)器相關(guān)操作屬于M(Model),該層具體上依賴于自定義的服務(wù)類。

    3.1.1 服務(wù)器端的層次結(jié)構(gòu)設(shè)計

    XMPP服務(wù)器采用的是開源的Openfire服務(wù)器,這個開源的項目應(yīng)用看apache的mina框架作為NIO框架。簡單來說Openfire服務(wù)器在mina框架的基礎(chǔ)上建立了一個簡單的服務(wù)器,用來發(fā)送基本的IO數(shù)據(jù)流,然后把接受到的IO解析為XML文件,后通過XMPP協(xié)議對接收到的XML文件進(jìn)行操作。

    3.1.2 客戶端的層次結(jié)構(gòu)設(shè)計

    3.2 系統(tǒng)數(shù)據(jù)庫設(shè)計

    系統(tǒng)采用的是C/S架構(gòu),所以客戶端本地也要進(jìn)行數(shù)據(jù)的持久化,所以系統(tǒng)的數(shù)據(jù)庫設(shè)計分為客戶端和服務(wù)器端。

    3.2.1 服務(wù)器端數(shù)據(jù)庫的設(shè)計

    由于服務(wù)器端采用的是開源的Openfire,它的數(shù)據(jù)庫端已經(jīng)有了良好的定義,并且支持外部數(shù)據(jù)庫。在本程序中我們沒有使用Openfire內(nèi)置的數(shù)據(jù)庫,而是采用了Mysql,主要是為了開發(fā)時查詢數(shù)據(jù)的方便以滿足實際需要。Openfire數(shù)據(jù)庫主要用來存儲用戶注冊的信息,用戶的名片信息以及聯(lián)系人信息。

    3.2.2 客戶端數(shù)據(jù)庫的設(shè)計

    因為相關(guān)功能的需求,客戶端也要對一些數(shù)據(jù)進(jìn)行本地的存儲。借助安卓內(nèi)置的Sqlite數(shù)據(jù)庫,我們可以高效地完成它。

    客戶端數(shù)據(jù)庫主要用來存儲聯(lián)系人信息和聊天信息。系統(tǒng)通過安卓sqlite包里面提供的api可以很便捷的操縱數(shù)據(jù)庫。

    3.3 系統(tǒng)關(guān)鍵點簡介

    1)對遠(yuǎn)程服務(wù)的實現(xiàn)(aidl)

    在清單文件中對IMService服務(wù)配置為多進(jìn)程

    通過onBind返回遠(yuǎn)程的binder對象,每次在程序中通過綁定服務(wù)來獲取binder對象,從而獲取XmppManager的遠(yuǎn)程接口對象(實例)來進(jìn)行對服務(wù)器的操作。

    通過在XmppManager類中定義所有的方法來實現(xiàn)對服務(wù)端的解耦。

    2)對各類數(shù)據(jù)(聊天記錄,聯(lián)系人列表的獲取監(jiān)聽本地數(shù)據(jù)庫)

    通ContentResolver對數(shù)據(jù)庫進(jìn)行操作更好的減輕了由單純監(jiān)聽帶來的各種問題。

    3)登陸模塊的實現(xiàn)

    登陸模塊分為前臺登陸和后臺登陸兩部分

    前臺登陸中保存當(dāng)前登陸用戶的信息,然后開啟相應(yīng)的服務(wù)進(jìn)行后臺登陸。所有過程放在異步任務(wù)中執(zhí)行。后臺登陸與前臺登陸大致相同。

    4)百度地圖相關(guān)

    在全局的application類中對百度地圖的監(jiān)聽進(jìn)行實現(xiàn),具體代碼如下:

    public class MyLocationListener implements BDLocationListener {

    @Override

    public void onReceiveLocation(BDLocation location) {

    }

    }

    * 設(shè)置得到位置后的回調(diào)監(jiān)聽器

    * @param listener

    */

    public void setGetLocationListener(getLocationListener listener){

    this.listener = listener;

    }

    * 得到自己位置信息的監(jiān)聽器

    * @author fsc

    public interface getLocationListener{

    * 得到百度地圖api返回的位置信息后的回調(diào)

    * @param location 當(dāng)前自己拼裝的位置信息

    * @param errorCode 百度地圖返回的錯誤碼,根據(jù)錯誤碼判斷定位是否成

    public void getLocation(String location,int errorCode);

    }

    參考文獻(xiàn):

    [1] android文檔[EB/OL]. http://www.androidcommunitydocs.com/.

    [2] 部署以及運開源項目[EB/OL].http://blog.csdn.net/shimiso/article/details/8816558.

    [3] openfire[EB/OL].http://www.igniterealtime.org/.

    [4] android-flat-button[EB/OL]. https://github.com/hoang8f/android-flat-button.

    [5] Shimer[EB/OL]. https://github.com/facebook/Shimmer.

    猜你喜歡
    服務(wù)器端開源陌生人
    五毛錢能買多少頭牛
    淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
    成功(2018年10期)2018-03-26 02:56:14
    如何面對陌生人
    兒童繪本(2017年8期)2017-05-10 18:18:21
    陌生人敲門不能開
    大家說:開源、人工智能及創(chuàng)新
    開源中國開源世界高峰論壇圓桌會議縱論開源與互聯(lián)網(wǎng)+創(chuàng)新2.0
    在Windows中安裝OpenVPN
    開源計算機(jī)輔助翻譯工具研究
    謹(jǐn)防陌生人
    謹(jǐn)防陌生人
    卢龙县| 玉树县| 北海市| 西青区| 襄汾县| 绿春县| 黄石市| 双柏县| 团风县| 临桂县| 平原县| 福建省| 抚松县| 云龙县| 昌江| 大姚县| 泰宁县| 磐安县| 金山区| 昌黎县| 长丰县| 临邑县| 溆浦县| 荥经县| 甘南县| 英德市| 双牌县| 司法| 东光县| 沁水县| 崇明县| 娄底市| 锦州市| 宜宾市| 北流市| 米林县| 若尔盖县| 木兰县| 酒泉市| 拜泉县| 浦江县|