微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 多网络和Linux代理的Android无线远程控制系统

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

时间:02-02 来源:电子科技 点击:

  引言

  随着智能系统的高速发展和智能移动终端的普及,在政府部门和企事业单位,员工使用Android系统的智能终端(包括手机和平板电脑)办公越来越多,利用网络对移动终端进行控制和管理,十分必要,目前的远程控制大多基于应用层实现,只能对特定的一些应用或者上层的一些权限进行管理和控制,不能对Android终端实现真正意义上的完全控制。另外,这些远程控制只是基于单个网络实现,不能保证远程控制的稳定实现。

  本文研究的这种控制系统,可以采用多种网络进行通信,包括WiFi、GPRS和GSM三种网络。利用Android底层基于Linux系统实现的特性,在Linux底层建立一个Agent,获取系统签名,能够执行需要获取到root权限的shell命令,实现对整个系统的完全控制。

  1  无线远程控制系统构架

  基于多网络(GPRS、WiFi、GSM)进行通信、通过Linux代理实现操作的无线远程控制系统,主要对多种网络通信方式进行适应性设计,以及对Android智能终端的系统设置、文件系统以及设备进行控制。

  系统基本功能包括:自动注册、发送消息、发送文件、管理应用程序、发送shell命令控制设备等。

  基于Linux代理的Android智能终端无线远程控制系统主要由3部分组成:控制端、被控终端和通信网络。系统的架构图如图1所示。

  

  2  无线远程控制系统设计

  2.1 多网络通信设计

  Android智能终端目前支持的网络有:GPRS无线网络和WiFi无线网络。WiFi无线网络的优点是网速快,缺点是有范围和信号强度的要求。而GPRS的优缺点和WiFi无线网络正好相反。目前,GPRS的2G网络传输速率在50 kb/s左右,3G网络速度更快,如果采用WiFi网络接入到Internet,速度甚至可以达到1 Mb/s。速度上完全可以达到远程控制中传输命令的速率要求。

  本系统采用多网络方式:优先选择WiFi无线网络,其次采用GPRS网络,最后采用GSM发送短消息控制。采用WiFi无线网络和GPRS网络的时候,Android终端之间通过Socket进行通信。

  如果该系统只是应用在局域网内,就只能使用WiFi无线网络;如果应用在远程或者广域网上,就可以使用WiFi无线网络和GPRS网络两者相结合的方式;如果没有WiFi和GPRS,才使用GSM网络。

  在广域网内使用时,当被控终靖启动系统的时候,会采用UDP方式向广域网发送登录广播,或者采用TCP协议向特定的控制端IP发送注册信息。控制端接收到信息后,注册到本机,然后通过TCP方式发送控制命令进行远程控制。

  在没有WiFi和GPRS的情况下,也可以采用GSM网络发送短消息命令进行一些简单的控制操作,例如:打开WiFi、打开GPRS网络等,使其可以使用上述两种网络进行控制。使用GSM网络的前提条件是需要知道被控终端的SIM号码。

  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显示消息;如果不是,则继续判断其是否为文件。如果是文件,则保存文

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top