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

互联网技术 责任编辑:hjf1972 2013-02-22

摘要:3.2控制端实现控制端包括5个大的模块:操作界面、自动注册、发送消息、发送文件、应用管理。操作界面:操作界面是基于应用层和应用框架层实现的。调用Android组件库中的Activity组件和ListActivity组件显示操作列表;点击列表按钮等组件用来调用操作命令;通过界面操作生成对应的命令发送到被控终端,并显示反馈结果。自动注

 

  3.2 控制端实现

  控制端包括5个大的模块:操作界面、自动注册、发送消息、发送文件、应用管理。

  操作界面:操作界面是基于应用层和应用框架层实现的。调用Android组件库中的Activity组件和ListActivity组件显示操作列表;点击列表按钮等组件用来调用操作命令;通过界面操作生成对应的命令发送到被控终端,并显示反馈结果。

  自动注册:启动后,通过组播地址,每隔30 s向网络中发送一次心跳包,报文为“regist‖ask”,通知网络中的被控终端进行注册。监听UDP端口和TCP端口,当接收到被控终端发送的注册信息后,取出源IP地址和ID,保存到数据库中,完成注册。

  发送消息:通过界面操作输入文本内容,向被控终端IP发送消息。报文为“sendMassage‖content”,第一部分是命令,第二部分是消息内容。

  发送文件:选择本地文件向被控终端IP发送。采用Socket发送报文“sendfile‖filename//filePath”.该报文第1部分是命令,表示发送文件,第2部分是文件名,第3部分是文件保存路径。通过发送路径,可以替换被控终端上的文件,实现数据更新等功能。文件内容在Socket连接的输入/输出流中,保存的文件名和路径从报头中获取。

  应用管理:首先,向被控终端IP发送命令,获取被控终端应用列表;然后,选择对应操作发送命令,在被控终端接收到命令后,调用Android接口和Agent代理执行命令。该命令包括4个:install、start、stop、uninstall.例如:报文“install ‖file.apk”,通过Socket发送file.apk应用到被控端的sdcard/apk目录下,然后,通过agent代理执行install安装命令安装该应用。此外,start、stop和uninstall三个命令中,只是调用接口执行,不传送文件。

  3.3 被控终端实现

  自动登录:被控终端启动的时候,也会建立两个线程和一个BroadCastReceiver.一个线程监听组播连接请求的消息,另一个线程监听TCP端口的命令;广播接收器接收GSM网络发送的短信命令。第一个线程中,组播端口监听到控制端发送的请求后,取得IP地址,然后,发送带有自己ID的Socket包,报文内容为“regist ‖IMEI号”,包括注册命令regist和IMEI号(Android终端标识)。第二个线程中,创建一个ServerSocket,监听控制端发送的TCP消息。BroadCastReeeiver接收到短消息广播后,传递给服务进行判断,看其接收到的是否是命令,如果是命令则执行对应操作。

  接收消息:在被控终端,Socket接收到控制端的消息后,会调用NotificationManager,在Android终端通知栏显示消息,点击通知会显示详细信息。

  接收文件:Socket后台接收文件,保存在/sdcard/download文件夹下,然后通过Agent命令执行copy命令,将文件复制到命令里面指定的路径下。文件名和保存路径通过报头获取。

  管理应用:安装应用分两步实现,第一步接收文件,第二步执行安装。第一步实现与上面所讲的接收文件相同,只是报文为“install‖n ame.apk”.默认保存到SD卡上的mnt/sdcard/apk路径下,然后,调用agent执行shell安装命令install mnt/sdeard/apk/name.apk.卸载应用时,直接执行接收到的命令uninstall packagename.启动应用时,通过Android系统接口Intent实现,停止和卸载都是通过被控终端上的Agent代理实现。“start‖appName”启动应用的时候,通过本地包管理获取到appName对应的包名packageName,新建一个Intent,启动包含该包的应用。代码如下:

  通过shell命令执行kill PID.PID是应用进程号,通过ActivityManager可以获取到。

  设备控制:可以通过命令例如“shell‖reboot”直接控制重启。

  3.4 Agent代理实现

  在编译系统内核的时候,将agent_server编入到路径/data/agentserver/agent_server下,用以接收命令。调用的时候,通过建立一个本地Socket,通过数据流发送shell命令到agent_setwer所在路径,实现通信。当agent_server接收到命令后,执行shell命令。

  4  测试结果

  设计的系统在ZTE U880手机上连接WiFi进行测试。图3为控制端界面,图4为控制端发送消息,图5为被控终端接收消息,图6为发送文件,图7为远程安装应用软件,图8为远程卸载应用软件,图9为shell命令界面。测试结果表明,系统能够实现发送消息、发送文件、安装和卸载应用,以及执行shell命令实现系统重启功能。

  结语

  本文设计了一个采用C/S模式实现的Android远程控制系统。控制端与被控终端之间采用Socket进行网络通信,在知道对方SIM卡号的情况下,也能通过GSM发送短信通信,能够实现多种网络的稳定通信。通过Linux代理能够实现root权限的操作,理论上可以实现对Android系统的完全远程控制。

[1]  [2]  

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

通信工程师备考资料免费领取

去领取

距离2025 通信工程师考试

还有
  • 0
  • 3
  • 8
专注在线职业教育24年

信息系统项目管理师

信息系统项目管理师

!
咨询在线老师!