重慶郵電大學(xué)光電工程學(xué)院 彭 珂 陳鴻躍
移動(dòng)智能端利用WiFi實(shí)時(shí)監(jiān)控接收的實(shí)現(xiàn)
重慶郵電大學(xué)光電工程學(xué)院 彭 珂 陳鴻躍
由于實(shí)驗(yàn)室的DMB發(fā)射系統(tǒng)信號(hào)覆蓋全校,且各個(gè)教室都有接收終端,范圍分布廣,對(duì)接收終端運(yùn)行情況難以把握,維護(hù)難度高。特此利用WiFi模塊對(duì)終端進(jìn)行監(jiān)控,并返回監(jiān)測的數(shù)據(jù)。將移動(dòng)智能端作為一個(gè)服務(wù)端,把WiFi模塊傳回來的數(shù)據(jù)存入sqlite,并實(shí)時(shí)更新UI界面。本論文就是在該背景下設(shè)計(jì)出一款能夠監(jiān)控接收終端的app。
多媒體應(yīng)用;TCP/IP;socket;實(shí)時(shí)監(jiān)控
數(shù)字音頻廣播(DAB)是數(shù)字化技術(shù)發(fā)展的一種新的廣播系統(tǒng),以數(shù)字技術(shù)為核心手段,可以傳輸任何形式的數(shù)據(jù),由此演變?yōu)閿?shù)字多媒體廣播(DMB)。一個(gè)DMB發(fā)射系統(tǒng)可控制多個(gè)接收終端,由于接收終端分布全校,數(shù)量多,范圍廣。每次維護(hù)需要耗費(fèi)大量的人力和時(shí)間,為了改善此情況,特此提出用WiFi模塊監(jiān)控接收終端[1],并向移動(dòng)智能端返回監(jiān)控?cái)?shù)據(jù),其數(shù)據(jù)的主要內(nèi)容有終端的ID號(hào),時(shí)間,誤碼率,頻段,音量等。ID號(hào)方便定位終端的位置,而誤碼率可以判斷終端的接收情況[2]。本文主要采用多線程的技術(shù)[3],將移動(dòng)智能終端當(dāng)做服務(wù)器接接收各個(gè)WiFi模塊傳回的數(shù)據(jù),并對(duì)其進(jìn)行處理。
遵循TCP/IP協(xié)議,采用客戶端/服務(wù)器模式,將移動(dòng)智能端當(dāng)做服務(wù)器,接收終端當(dāng)做客戶端。通過套接字Socket來連通服務(wù)器和客戶端,每個(gè)客戶端連接服務(wù)器就將開啟一個(gè)線程。由于Android系統(tǒng)內(nèi)置SQLite數(shù)據(jù)庫,該數(shù)據(jù)庫運(yùn)算速度快,占用資源少,服務(wù)器將客戶端傳回來的數(shù)據(jù)存入SQLite數(shù)據(jù)庫中,并實(shí)時(shí)顯示在UI界面上。UI界面將采用RecyclerView控件,實(shí)現(xiàn)滾動(dòng)顯示數(shù)據(jù)的效果。
基于TCP的socket編程的服務(wù)器,其程序流程如下:
(1)創(chuàng)建套接字,將套接字綁定到一個(gè)本地地址和端口上,由于是一對(duì)多的關(guān)系,需要為客戶端的連接,建立一個(gè)套接字列表:
(2)將套接字設(shè)置為監(jiān)聽模式,準(zhǔn)備接受客戶請求,當(dāng)客戶端請求到來,接受請求,返回一個(gè)對(duì)應(yīng)的連接的套接字,并開啟一個(gè)新線程,專門負(fù)責(zé)與客戶端進(jìn)行通信:
將客戶端傳回來的數(shù)據(jù)存入數(shù)據(jù)庫中,Android為了方便管理數(shù)據(jù)庫,提供了SQLiteOpenHelper幫助類來創(chuàng)建數(shù)據(jù)庫和升級(jí),利用getReadableDatabase()和getWriteableDatabase()來打開或創(chuàng)建一個(gè)數(shù)據(jù)庫,并返回一個(gè)可對(duì)將數(shù)據(jù)庫進(jìn)行操作的對(duì)象。對(duì)數(shù)據(jù)的操作大致分為四種:添加數(shù)據(jù)(insert),查詢數(shù)組(select),更新數(shù)據(jù)(updata),刪除數(shù)據(jù)(delete)。
存入數(shù)據(jù)庫后,就需要從數(shù)據(jù)庫中讀取數(shù)據(jù)顯示在UI界面上,由于數(shù)據(jù)內(nèi)容多,一頁無法全部顯示,所以選擇RecyclerView控件,可滑動(dòng)刷新數(shù)據(jù)。使用RecyclerView需要先在項(xiàng)目的build.gradle中添加相應(yīng)的依賴庫,且必須為準(zhǔn)備一個(gè)適配器(adapter),將需要展示的傳入適配器中。
本應(yīng)用程序是在Android studio平臺(tái)下開發(fā)的,在模擬器中穩(wěn)定運(yùn)行后,將APK安裝到真機(jī)上測試,經(jīng)過測試可以同時(shí)接收90個(gè)客戶端發(fā)送過來的消息,整個(gè)應(yīng)用穩(wěn)定運(yùn)行。達(dá)到了實(shí)時(shí)監(jiān)控接收的目的,且數(shù)據(jù)保存在sqlite中,可提供查閱。測試效果如圖1所示:
圖1 測試效果圖
本文介紹了一種移動(dòng)智能終端利用WiFi實(shí)時(shí)監(jiān)控接收的方法,能夠?qū)崟r(shí)監(jiān)控接收,并通過WiFi模塊傳回的數(shù)據(jù),存入數(shù)據(jù)庫,更新在UI界面上。并在實(shí)際環(huán)境中調(diào)試應(yīng)用,軟件運(yùn)行穩(wěn)定。由于其能夠精確定位終端位置,且可以實(shí)時(shí)監(jiān)控,解決了接收終端難維護(hù)的問題。
[1]徐虎,彭正濤,趙俊逸.基于WiFi的Android移動(dòng)設(shè)備語音通信系統(tǒng)的設(shè)計(jì)開發(fā)[J].計(jì)算機(jī)應(yīng)用與軟件,2012.
[2]韓路,高賢強(qiáng),王世發(fā).基于Android系統(tǒng)的手機(jī)軟件開發(fā)研究[J].電子技術(shù)與軟件工程,2014(3):60-61.
[3]李娟.Java多線程同步機(jī)制研究分析[J].中國科教創(chuàng)新導(dǎo)刊,2014(07).