羅 孟陶衛(wèi)平何錫茂(.欽州學(xué)院,廣西 欽州 535000;.欽州學(xué)院電子與信息工程學(xué)院,廣西 欽州 535000)
移動設(shè)備應(yīng)急通訊系統(tǒng)設(shè)計與開發(fā)
羅 孟1陶衛(wèi)平2何錫茂2
(1.欽州學(xué)院,廣西 欽州 535000;2.欽州學(xué)院電子與信息工程學(xué)院,廣西 欽州 535000)
隨著移動互聯(lián)網(wǎng)時代正式到來,即時通訊軟件成為了最受歡迎的軟件之一,但是目前的即時通訊類軟件必須通過互聯(lián)網(wǎng)接入服務(wù)器,才能實現(xiàn)設(shè)備間的通訊。文章設(shè)計的移動設(shè)備應(yīng)急通訊系統(tǒng)主要通過對Android、Wi-Fi Direct等相關(guān)技術(shù)的研究,利用無線網(wǎng)絡(luò)的便捷性,快速搭建局部通訊網(wǎng)絡(luò),在沒有通訊服務(wù)器的情況下為智能移動設(shè)備提供應(yīng)急的臨時通訊服務(wù)。
Android;局域網(wǎng);即時通訊;Socket;Wi-Fi
即時通訊軟件作為移動互聯(lián)網(wǎng)時代最具革命性應(yīng)用軟件,不僅帶來了新的信息傳播方式,也顛覆了傳統(tǒng)的溝通方式。但是目前的即時通訊類軟件,無論是國外的Facebook還是國內(nèi)的微博、微信,都必須通過互聯(lián)網(wǎng)接入服務(wù)器才能實現(xiàn)設(shè)備間的通訊。因此設(shè)計開發(fā)一個無需網(wǎng)絡(luò)服務(wù)器的應(yīng)急通訊系統(tǒng)就變得尤為重要。移動設(shè)備應(yīng)急通訊系統(tǒng)能夠幫助用戶在無互聯(lián)網(wǎng)服務(wù)的情況下,自行創(chuàng)建Wi-Fi局域網(wǎng)實現(xiàn)文字、語音、圖像等數(shù)據(jù)傳輸。本系統(tǒng)的意義在于當(dāng)通訊網(wǎng)絡(luò)中斷(例如:遭遇地震、臺風(fēng)、泥石流等自然災(zāi)害),充分考慮到局域網(wǎng)的通信需求,手持智能移動終端設(shè)備通過局域網(wǎng)之間的語音、圖片、文字通訊達到應(yīng)急通信的目的。本系統(tǒng)基于 Android平臺開發(fā),在實現(xiàn)目標(biāo)功能的同時遵循Android用戶界面設(shè)計規(guī)則,并有良好的拓展性與可維護性。
本系統(tǒng)選擇Wi-Fi技術(shù)組建無線局域網(wǎng)。Wi-Fi是一種高頻電信號以無線的方式將手機、平板電腦等智能移動手持終端連接起來的一種技術(shù)[8],具有組網(wǎng)成本低、組網(wǎng)簡單方便等顯著優(yōu)點,能夠滿足智能移動手持終端間臨時應(yīng)急通訊的需求。
2.1 功能分析
(1)免注冊使用功能。軟件定位是作為一個應(yīng)急通訊系統(tǒng),完全不需要繁瑣的注冊,首次登陸僅需填寫姓名等最基本信息即可使用。(2)免添加聯(lián)系人功能。無需繁瑣的驗證添加聯(lián)系人過程,只要有兩個或多個用戶連接到同一 Wi-Fi網(wǎng)絡(luò),立即在列表中顯示對方信息。(3)文字、語音通訊功能。內(nèi)容實時顯示在對話窗口。(4)提供新消息“聲音”、“震動”提醒開關(guān)。(5)查看對方賬號信息。查看在線用戶IP地址、設(shè)備型號等信息。(6)圖像發(fā)送功能。瀏覽本地圖像或調(diào)用相機進行拍照保存發(fā)送。
2.2 歡迎與登陸界面
由于本軟件系統(tǒng)無需注冊,本頁面只需要提供一個登陸入口即可,考慮到目前大尺寸屏幕手機單手操作的靈活性,將登陸按鈕放在屏幕底部。點擊登陸將跳轉(zhuǎn)到登陸界面。
用戶通過點擊歡迎界面的登陸按鈕將來到登陸設(shè)置頁面,用戶只需填寫昵稱等最基本登陸資料,點擊下一步,系統(tǒng)做登錄資料完整性驗證,不完整則無法登陸,并彈出提示對話框,完整則記錄用戶輸入的信息并跳轉(zhuǎn)到Wi-Fi連接頁面。
2.3 Wi-Fi連接與登陸
監(jiān)測系統(tǒng)是否連接Wi-Fi并定時掃描Wi-Fi熱點在列表中顯示。如圖 1所示用戶點擊下一步后執(zhí)行登陸并將設(shè)備如IMEI作為用戶ID寫入SD卡。
圖1 Wi-Fi連接登陸
2.4 語音采集與播放
通過調(diào)用Android系統(tǒng)提供的MediaRecord和MediaPlayer可以完成錄音和音頻播放。
語音數(shù)據(jù)的發(fā)送采用UDP協(xié)議。通過DatagramPacker類中的setData()方法對數(shù)據(jù)包設(shè)置,然后調(diào)用send()方法將數(shù)據(jù)包發(fā)送給對方。
接收數(shù)據(jù)主要是在廣播的通知下,對已經(jīng)組網(wǎng)的移動終端發(fā)送出的語音數(shù)據(jù)做出相應(yīng)的回應(yīng),接到廣播通知后,就會啟動接收數(shù)據(jù)的線程,在此線程的控制下來完成數(shù)據(jù)接收[10]。同樣分別構(gòu)造DatagramSocket()和DatagramPacket()對象,DatagramPacket()主要是對接收的語音數(shù)據(jù)的長度進行設(shè)置,目的是為了更好的接收數(shù)據(jù)包,降低數(shù)據(jù)包的丟失率。
3.1 歡迎與登陸界面的實現(xiàn)
3.1.1 歡迎界面的實現(xiàn)在res.layout目錄下新建Layout屬性的Android xml文件,
定義一個Button,并為其指定id,然后新建WelcomeActivity Java類,通過findViewById與剛才定義Button按鈕簡歷連接,
然后通過setOnClickListener()與onClick()方法監(jiān)聽Button按鈕點擊動作并跳轉(zhuǎn)至登陸界面。
3.1.2 登陸界面的實現(xiàn)
在res.layout下創(chuàng)建Layout布局文件,然后在LoginActivity Java類做登錄資料完整性驗證,不完整則無法登陸,完整則記錄輸入的信息。
3.2 附近Wi-Fi熱點掃描與連接
Wi-Fi熱點的首先進行控件初始化設(shè)置,通過getLocalHostName()獲取熱點id呈現(xiàn)到布局頁面,并設(shè)置定時刷新WiFi列表信息,相關(guān)代碼如下:
/** 初始化控件設(shè)置 **/
protected void initAction() {
if (!WifiUtils.isWifiConnect()
&& !WifiUtils.isWifiApEnabled()) { // 無開啟熱點無連接WIFI
WifiUtils.OpenWifi();
}
if (WifiUtils.isWifiConnect()) { // Wifi 已連接
mTvStatusInfo.setText(getString(R.string.wifiap_text_wifi_c onnected)
+ WifiUtils.getSSID());
}
/獲取Wifi 熱點名 * <p>* BuildBRAND 系統(tǒng)定制商 ; BuildMODEL 版本* </p>
* @return 返回 定制商+版本 (String類型),用于創(chuàng)建熱點。
*/
public String getLocalHostName() {
String str1 = Build.BRAND;
String str2 = TextUtils.getRandomNumStr(3);
return str1 + "_" + str2;
}
public String getPhoneModel() { String str1 = Build.BRAND; String str2 = Build.MODEL; str2 = str1 + "_" + str2;
return str2; }
3.3 語音通訊功能的實現(xiàn)
該功能的實現(xiàn)過程主要是用戶首先進行音頻錄制的采集,然后發(fā)給目標(biāo)客戶,目標(biāo)客戶收到音頻后點擊消息框?qū)σ纛l播放。對錄音按鈕定義三個按鍵響應(yīng)事件,分別是按下、松開、滑動。
當(dāng)按鍵按下時,初始化語音界面,并開始并錄制音頻并采集;采集過程首先要對音頻設(shè)備,音頻格式,編碼方式以及臨時輸出文件的路徑進行設(shè)置,然后執(zhí)行 prepare()方法,然后執(zhí)行start()方法進行采集,并通過Dialog將音量大小顯示在界面上。方法如下:
protected void showVoiceDialog(int flag) { if (mRecordDialog == null) { mRecordDialog = new Dialog(BaseMessageActivity. this, R.style.DialogStyle);
mRecordDialog.requestWindowFeature(Window.FEATURE _NO_TITLE);
mRecordDialog.getWindow().setFlags(WindowManager.La youtParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
mRecordDialog.setContentView(R.layout.record_dialog);
mIvRecVolume = (ImageView)
mRecordDialog. findViewById(R.id.record_dialog_img); mTvRecordDialogTxt = (TextView)
mRecordDialog. findViewById(R.id.record_dialog_txt);
}
switch (flag) {
case 1∶
mIvRecVolume.setImageResource(R.drawable.record_canc el);
mTvRecordDialogTxt.setText(getString(R.string.chat_dialo g_record_cancel_up));
break;
default∶
mIvRecVolume.setImageResource(R.drawable.record_anim ate_01);
mTvRecordDialogTxt.setText(getString(R.string.chat_dialo g_record_cancel_move));
break;
}
mTvRecordDialogTxt.setTextSize(14); mRecordDialog.show();
}
當(dāng)松開按鍵時,采集的文件會被傳輸。通過message對象,先發(fā)送一條普通的消息,然后進行文件的發(fā)送。進行文件發(fā)送的時候,需要新啟動一個線程來發(fā)送,因為文件的發(fā)送耗時會比較長,若不啟用多線程就會提示未響應(yīng)。所以啟動一個新的線程來傳輸文件,并根據(jù)相應(yīng)功能接口的返回值,設(shè)置文件傳輸是否成功。語音留言傳輸過程中的狀態(tài)會根據(jù)實體類中的屬性進行更新,成功與否會顯示在界面上。客戶端在接受的時候,需要在客戶端設(shè)置一個監(jiān)聽,監(jiān)聽文件是否傳輸過來。當(dāng)文件被準(zhǔn)許接收,就將接收的文件存放在相應(yīng)的路徑。
4.1 測試準(zhǔn)備
選擇測試設(shè)備??紤]經(jīng)濟、方便等因素,最終選擇了目前熱門5臺Android智能手機進行測試,分別是:魅族PRO5、紅米3、魅族、OPPO R7、樂視1S。
4.2 歡迎登陸功能測試
運行應(yīng)用程序,通過歡迎界面按鈕跳轉(zhuǎn)到登陸界面,輸入昵稱、性別等基本信息,點擊下一步,進入 Wi-Fi顯示界面。
4.3 附近Wi-Fi熱點刷新與連接測試
附近Wi-Fi熱點刷新功能測試:通過增加熱點進行測試,若界面顯示該熱點則證明刷新功能成功,若沒有顯示,則有兩種可能結(jié)果:①附近不存在該熱點;②刷新功能失敗。
附近Wi-Fi熱點連接功能測試:點擊listView中任意Wi-Fi熱點,彈出密碼輸入界面,輸入密碼,啟動Wi-Fi連接服務(wù)。
Wi-Fi熱點刷新與連接測試結(jié)果如表1所示。
表1 Wi-Fi熱點刷新與連接測試
熱點刷新測試功能失敗原因及解決方案:通過代碼檢查發(fā)現(xiàn) WifiUtils.isWifiApEnabled()方法中未進行 try.catch異常捕獲導(dǎo)致刷新失敗,在添加try.catch后刷新功能正常。
4.4 文本、圖像、語音通訊功能測試
文本通訊功能、圖像功能、語音通訊功能測試:啟動聊天界面,給在線用戶發(fā)送一段文本,通過對方是否能正常收到信息判斷功能是否正常。
測試結(jié)果分析:
(1)點擊發(fā)送按鈕,若信息無法發(fā)送,則信息傳輸模塊出現(xiàn)問題,若信息發(fā)送成功,對方卻沒有收到,則是傳輸過程中出現(xiàn)了丟包的情況。
(2)點擊添加圖片按鈕,若出現(xiàn)無法瀏覽圖片,有兩種情況,第一是軟件沒有獲取讀讀取文件的權(quán)限,第二是圖像預(yù)覽Activity加載失敗。
表2 語音采集與播放測試表
4.5 傳輸范圍測試
測試選在封閉的建筑和車流、人流適中的校道上進行。距離測試的目的主要是測試 Wi-Fi信號發(fā)射器的最大輻射范圍和軟件的穩(wěn)定性。在建筑物內(nèi),設(shè)備之間的搜索、連接,通訊能夠正常工作,達到預(yù)期的設(shè)計目標(biāo);在校道上,測試最遠的通信距離達到100m,當(dāng)超過該距離時,連接斷開。當(dāng)距離超過90米時,設(shè)備之間能夠進行搜索、連接,但是通訊會出現(xiàn)丟包現(xiàn)象。這主要是由于 Wi-Fi信號發(fā)射設(shè)備發(fā)射功率太小的原因,當(dāng)處在微弱信號狀態(tài)下會發(fā)生相應(yīng)的丟包現(xiàn)象。
4.6 多用戶測試
進行多用戶測試的目的只要是測試系統(tǒng)最大能承載用戶量以及用戶量增大之后是否存在軟件奔潰、數(shù)據(jù)傳輸丟包等情況。但是由于設(shè)備有限的原因,只找到5臺設(shè)備進行測試,在多點入網(wǎng)的測試過程中,均能正常進行設(shè)備的搜索、連接,通訊。
本次設(shè)計,主要是為了滿足用戶在無法使用互聯(lián)網(wǎng)時,通過自身設(shè)備搭建簡易無線局域網(wǎng)實現(xiàn)通訊的需求,最終設(shè)計并實現(xiàn)了用戶需求。
[1] 單家凌,葉潤發(fā).基于Wi-Fi的Android通信系統(tǒng)[J].計算機系統(tǒng)應(yīng)用,2014(5)∶69-72.
[2] 李艷.基于網(wǎng)絡(luò)數(shù)據(jù)庫下的即時通訊系統(tǒng)的設(shè)計與實現(xiàn)[D].石家莊∶河北科技大學(xué),2010.
[3] 孟曉龍.Win7系統(tǒng)下Android開發(fā)平臺的搭建[J].科協(xié)論壇(下半月),2011(8)∶72-73.
[4] 尹京花,王華軍.基于 Android開發(fā)的數(shù)據(jù)存儲[J].數(shù)字通信,2012(6)∶79-81.
[5] 孫震強,董智明.利用即時通信實現(xiàn)人機共享的方案研究[J].移動通信,2010(15)∶44-46.
[6] 楊群.基于WI-FI熱點技術(shù)的即時P2P語音通信系統(tǒng)的研究與設(shè)計[D].武漢∶華中師范大學(xué),2014.
[7] 孟賀.基于 Android的即時通訊系統(tǒng)的設(shè)計與實現(xiàn)[D].濟南∶山東大學(xué),2014.
[8] 丁倩.基于Android平臺局域網(wǎng)即時通訊軟件的設(shè)計與實現(xiàn)[D].西安∶西安電子科技大學(xué),2013.
[9] 李鷗.Android手機平臺的隱私信息防護系統(tǒng)的研究與實現(xiàn)[D].成都∶電子科技大學(xué),2013.
[10] 羅偉.基于 Android平臺的即時通訊系統(tǒng)的研究與實現(xiàn)[D].長沙∶湖南師范大學(xué),2009.
[11] 饒潤潤.基于安卓操作系統(tǒng)的應(yīng)用軟件開發(fā)[D].西安∶西安電子科技大學(xué),2014.
Design and development of emergency communication system for mobile equipment
Instant messaging software is the most popular mobile Internet era of software, but the current instant communications software has an inevitable disadvantage that must be the premise of the Internet access server in order to achieve communication between devices. Mobile emergency communications system design, mainly by Android, Wi-Fi Direct technology related research, the convenience of using a wireless network, quickly set up a local communication network, in the case of no communication with the server to provide emergency communications for the temporary smart mobile devices service.
Android; ocal area network; instant messaging; Socket; Wi-Fi
TN929.5
A
1008-1151(2016)10-0005-03
2016-09-11
2015年度廣西高等教育本科教學(xué)改革工程項目(2015JGA371);2015年度欽州學(xué)院大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃項目(201511607169)。
羅孟(1980-),男,廣西欽州人,欽州學(xué)院講師,工程碩士,研究方向為教育技術(shù)學(xué)。