多网络和Linux代理的Android无线远程控制系统

时间:2013-01-11来源:网络

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所示。

d.JPG



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执行,同时截断广播,这样手机收件箱就不会收到该条短信。
e.JPG
3.2 控制端实现
控制端包括5个大的模块:操作界面、自动注册、发送消息、发送文件、应用管理。
操作界面:操作界面是基于应用层和应用框架层实现的。调用Android组件库中的Activity组件和ListActivity组件显示操作列表;点击列表按钮等组件用来调用操作命令;通过界面操作生成对应的命令发送到被控终端,并显示反馈结果。

1 2 3

关键词: 多网络 Linux代理 Android系统 无线远程控制

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版