<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 多網(wǎng)絡(luò )和Linux代理的Android無(wú)線(xiàn)遠程控制系統

多網(wǎng)絡(luò )和Linux代理的Android無(wú)線(xiàn)遠程控制系統

作者: 時(shí)間:2013-01-11 來(lái)源:網(wǎng)絡(luò ) 收藏

2. 2 控制端設計
Android控制端在使用WiFi和GPRS網(wǎng)絡(luò )時(shí),通過(guò)Socket進(jìn)行通信,可以實(shí)現全部的命令;在使用GSM網(wǎng)絡(luò )時(shí),通過(guò)短消息發(fā)送命令進(jìn)行控制,只能發(fā)送部分操作指令,不能進(jìn)行的操作包括發(fā)送文件、應用程序等需要通過(guò)IP地址進(jìn)行通信的操作。
Sqlite數據庫保存被控終端的信息數據和操作日志。Linux文件系統保存需要發(fā)送的文件和應用程序等。Android控制端具體功能設計如下:
①自動(dòng)注冊:編寫(xiě)Java程序通過(guò)接口調用MulticastSocket發(fā)送請求注冊廣播,并監控端口,接收被控終端的注冊廣播。
②發(fā)送消息:通過(guò)已注冊的被控終端IP地址,編程調用Socket接口發(fā)送消息到被控終端,并監聽(tīng)端口,接收反饋消息。
③發(fā)送文件:編寫(xiě)監控程序調用Socket端口進(jìn)行通信,調用Android文件系統,讀取存儲在SD卡上的文件進(jìn)行發(fā)送。
④發(fā)送控制命令:有兩種方式,一種通過(guò)Socket發(fā)送控制命令到被控終端IP;另一種通過(guò)GSM網(wǎng)絡(luò )發(fā)送特定格式的短消息到被控終端手機,實(shí)現命令控制設備。
2.3 被控終端設計
Android被控終端沒(méi)有監控界面,只有一個(gè)后臺服務(wù)和一個(gè)Agent代理,該代理也是一個(gè)后臺服務(wù),不過(guò)這個(gè)服務(wù)是集成在版本中的。
本地后臺服務(wù)會(huì )隨系統啟動(dòng)而啟動(dòng),啟動(dòng)后會(huì )建立一個(gè)線(xiàn)程(Thread),線(xiàn)程通過(guò)Socket監聽(tīng)本機的通信端口;同時(shí),還會(huì )建立一個(gè)廣播接收器(BroadcastReceiver),用于接收通過(guò)GSM網(wǎng)絡(luò )發(fā)來(lái)的短消息廣播。當Socket端口監聽(tīng)線(xiàn)程監聽(tīng)到數據時(shí),先判斷其是否為控制端的注冊請求。如果是,則反饋信息到控制端注冊;如果不是,則判斷是否為命令。如果是命令,則交給Agent代理執行;如果不是,再判斷其是否為消息。如果是消息,則調用Android的Activity顯示消息;如果不是,則繼續判斷其是否為文件。如果是文件,則保存文件到文件系統中;如果不是,則退出,丟棄該消息。當廣播接收器接收到GSM短信時(shí),后臺服務(wù)對消息進(jìn)行判斷,看其是否為控制命令。如果是命令,則GSM短信會(huì )被截斷,被控終端用戶(hù)不會(huì )提示收到短消息,然后,將命令傳遞給Agent代理進(jìn)行執行,調用接口對應的功能模塊執行。最后,將執行結果通過(guò)Socket反饋給控制端。其對應的功能模塊設計流程圖如圖2所示。

本文引用地址:http://dyxdggzs.com/article/159562.htm

d.JPG



3 具體實(shí)現
3.1 通信實(shí)現
該系統的總體設計思路是;一定數量的Android終端用戶(hù)群之間,有一個(gè)作為控制端,其余的是被控終端,通過(guò)WiFi無(wú)線(xiàn)網(wǎng)、GPRS網(wǎng)絡(luò )進(jìn)行通信,控制端發(fā)送命令到被控終端執行,采用C/S結構。
(1) GPRS網(wǎng)絡(luò )和WiFi網(wǎng)絡(luò )通信實(shí)現
首先,在控制終端和被控端都建立一個(gè)TCP端口監聽(tīng)線(xiàn)程。分別建立一個(gè)ServerSocket,能各自監聽(tīng)自己的TCP端口,端口地址分別為:控制端為10000,被控終端10001。被控終端監聽(tīng)控制端發(fā)送命令信息,命令放在報頭中,而文件等內容放在數據流中;命令會(huì )被執行并保存到數據中,文件會(huì )保存到SD卡上,等待被命令調用執行,在此,完成TCP通信。另外,控制端和被控端各自創(chuàng )建一個(gè)MulticastSocket對象,并加入一個(gè)組播地址,地址為234.0.0.1,控制端的端口為10002,被控終端端口為10003??刂贫擞靡员O聽(tīng)被控終端發(fā)送的登錄廣播信息;被控終端監聽(tīng)控制端發(fā)送的連接請求;當接收到組播UDP包后,取得源IP地址和源ID,將信息保存到本地數據庫中,完成通信。
(2) GSM網(wǎng)絡(luò )通信實(shí)現
如果在GPRS和WiFi都不通的情況下,使用GSM短信發(fā)送命令。具體如下:在被控制端建立一個(gè)Broadcast Receiver,接收系統短信廣播,并將優(yōu)先級設置為2147483674最高級別,這樣會(huì )優(yōu)先于其他方式先對短信內容進(jìn)行處理。當有短信進(jìn)入被控終端時(shí),Broadcast Receiver會(huì )優(yōu)先截取到短信內容,首先判斷該短信是否為控制命令。如果是,則將命令發(fā)送到Service執行,同時(shí)截斷廣播,這樣手機收件箱就不會(huì )收到該條短信。
e.JPG
3.2 控制端實(shí)現
控制端包括5個(gè)大的模塊:操作界面、自動(dòng)注冊、發(fā)送消息、發(fā)送文件、應用管理。
操作界面:操作界面是基于應用層和應用框架層實(shí)現的。調用Android組件庫中的Activity組件和ListActivity組件顯示操作列表;點(diǎn)擊列表按鈕等組件用來(lái)調用操作命令;通過(guò)界面操作生成對應的命令發(fā)送到被控終端,并顯示反饋結果。

linux相關(guān)文章:linux教程




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>