多網絡和Linux代理的Android無線遠程控制系統
2. 2 控制端設計
Android控制端在使用WiFi和GPRS網絡時,通過Socket進行通信,可以實現全部的命令;在使用GSM網絡時,通過短消息發送命令進行控制,只能發送部分操作指令,不能進行的操作包括發送文件、應用程序等需要通過IP地址進行通信的操作。
Sqlite數據庫保存被控終端的信息數據和操作日志。Linux文件系統保存需要發送的文件和應用程序等。Android控制端具體功能設計如下:
①自動注冊:編寫Java程序通過接口調用MulticastSocket發送請求注冊廣播,并監控端口,接收被控終端的注冊廣播。
②發送消息:通過已注冊的被控終端IP地址,編程調用Socket接口發送消息到被控終端,并監聽端口,接收反饋消息。
③發送文件:編寫監控程序調用Socket端口進行通信,調用Android文件系統,讀取存儲在SD卡上的文件進行發送。
④發送控制命令:有兩種方式,一種通過Socket發送控制命令到被控終端IP;另一種通過GSM網絡發送特定格式的短消息到被控終端手機,實現命令控制設備。
2.3 被控終端設計
Android被控終端沒有監控界面,只有一個后臺服務和一個Agent代理,該代理也是一個后臺服務,不過這個服務是集成在Android系統版本中的。
本地后臺服務會隨系統啟動而啟動,啟動后會建立一個線程(Thread),線程通過Socket監聽本機的通信端口;同時,還會建立一個廣播接收器(BroadcastReceiver),用于接收通過GSM網絡發來的短消息廣播。當Socket端口監聽線程監聽到數據時,先判斷其是否為控制端的注冊請求。如果是,則反饋信息到控制端注冊;如果不是,則判斷是否為命令。如果是命令,則交給Agent代理執行;如果不是,再判斷其是否為消息。如果是消息,則調用Android的Activity顯示消息;如果不是,則繼續判斷其是否為文件。如果是文件,則保存文件到文件系統中;如果不是,則退出,丟棄該消息。當廣播接收器接收到GSM短信時,后臺服務對消息進行判斷,看其是否為控制命令。如果是命令,則GSM短信會被截斷,被控終端用戶不會提示收到短消息,然后,將命令傳遞給Agent代理進行執行,調用Android系統接口對應的功能模塊執行。最后,將執行結果通過Socket反饋給控制端。其對應的功能模塊設計流程圖如圖2所示。本文引用地址:http://www.104case.com/article/159562.htm
3 具體實現
3.1 多網絡通信實現
該系統的總體設計思路是;一定數量的Android終端用戶群之間,有一個作為控制端,其余的是被控終端,通過WiFi無線網、GPRS網絡進行通信,控制端發送命令到被控終端執行,采用C/S結構。
(1) GPRS網絡和WiFi網絡通信實現
首先,在控制終端和被控端都建立一個TCP端口監聽線程。分別建立一個ServerSocket,能各自監聽自己的TCP端口,端口地址分別為:控制端為10000,被控終端10001。被控終端監聽控制端發送命令信息,命令放在報頭中,而文件等內容放在數據流中;命令會被執行并保存到數據中,文件會保存到SD卡上,等待被命令調用執行,在此,完成TCP通信。另外,控制端和被控端各自創建一個MulticastSocket對象,并加入一個組播地址,地址為234.0.0.1,控制端的端口為10002,被控終端端口為10003。控制端用以監聽被控終端發送的登錄廣播信息;被控終端監聽控制端發送的連接請求;當接收到組播UDP包后,取得源IP地址和源ID,將信息保存到本地數據庫中,完成通信。
(2) GSM網絡通信實現
如果在GPRS和WiFi都不通的情況下,使用GSM短信發送命令。具體如下:在被控制端建立一個Broadcast Receiver,接收系統短信廣播,并將優先級設置為2147483674最高級別,這樣會優先于其他方式先對短信內容進行處理。當有短信進入被控終端時,Broadcast Receiver會優先截取到短信內容,首先判斷該短信是否為控制命令。如果是,則將命令發送到Service執行,同時截斷廣播,這樣手機收件箱就不會收到該條短信。
3.2 控制端實現
控制端包括5個大的模塊:操作界面、自動注冊、發送消息、發送文件、應用管理。
操作界面:操作界面是基于應用層和應用框架層實現的。調用Android組件庫中的Activity組件和ListActivity組件顯示操作列表;點擊列表按鈕等組件用來調用操作命令;通過界面操作生成對應的命令發送到被控終端,并顯示反饋結果。
linux相關文章:linux教程
評論