基于Android手机远程控制的设计与实现
2015-05-30周军
周军
摘要:本文介绍了一款基于Android手机远程控制电脑的软件,终端设备采用的是Android系统的移动终端,利用TCP/IP协议实现移动设备和电脑端的连接。采取了客户端/服务器端的通信模式,实现了用户在移动终端上可以随时控制电脑,并可以发送指令给电脑,让电脑完成相应的功能,提高了用户的便捷性以及对电脑的可视化操作。
关键词:Android;远程控制;通信
1引言
随着通讯技术的快速发展,手机、平板电脑等移动数字终端设备被更多的人所喜爱。已经成为了目前人们闲暇时间娱乐的方式了。此时就需要一款能够智能的手机来满足人们的需要了,首先就需要一款全新的系统,Android系统是一个以Linux为基础的开源操作系统,主要应用于手机系统的开发。结合当前计算机通讯和移动网络的知识,对Android移动终端设备进行分析,可以开发出一款适合普通用户所使用的一款软件,通过WIFI无线网络连接用户电脑的远程控制系统。
2基于Android平台系统架构
Android系统的架构是分层的,从上到下依次分为四层5个部分:分别为是应用程序、应用程序框架、开发库和Android运行时环境、Linux内核。对于这种分层架构的思想完全可以提高我们开发的效率,并且降低了错误的几率。Android系统架构如图1所示:
2.2 Android系统架构组成
该层为开发者提供了实际应用开发的过程中需要的很多功能需求,本系统所用的主要框架包括:
(1)活动管理器:实现控制的界面以及应用软件的界面的跳转。
(2)视图系统:一些能被用户察觉的组件的创建。
(3)资源管理器:主要管理应用程序里面不是主代码的一些资源,比如调用的图片,组件的ID等等。
(4)通知管理器:当程序调试过程中将警示消息传递给我们的开发人员便于系统的调试。
(5)窗口管理器:用于管理开启的窗口程序。
2.3Android四大组件
Android应用程序是由四个组件组成的:分别为活动页面、服务、内容提供者、广播接收者。
在开发人员在开发Android应用程序之前,开发人员就需要深入了解Android的四大组件以及之间的联系,Android还提供了一个工具类Intent,用户为这四大组件之间传递信息,下面为我们介绍四大组件:
(1)Activity
Activity是四个组件中最常用的一个,通常活动就伴随着一个可以被用户直观看到的屏幕界面。在界面上显示的活动都继承与Activity,因此都继承了一些Activity的一些方法,从用户的直观视觉上讲的话,Activity就相当于程序的一个界面并且可以回应其他窗口,但是从内部的一些逻辑来讲的话,一个Activity如果想保持其状态,那么生命周期也需要思考。
(2)Service
Service是具有长生命周期并且没有用户界面的一种后台服务,简单来说,就是剥离了界面的Activity。与Activity最明显的就是Service运行的时候用户会感觉不到它的存在。因为它运行在后台,但是有一点它和Activity类似,就是当Service运行的时候不会对其它的一些用户的界面和组件的产生任何干扰。在一般情况下,我们为了防止Service对我们的主界面产生影响,我们的开发人员都会创建一个新的独立的新线程来进行一些耗时任务。
(3)Content Provider
Content Provider在Android中主要是对数据的存取以及共享,开发的应用中的数据可以被其他组件所共享和使用。Android中另外三种数据存储方式是1.文件系统,2.数据库,3.资源文件:另外Content Provider并不能直接访问应用内部的数据库或者数据的文件。它只是抽象的存储访问方法。
(4)Broadcast Receiver
Broadcast Receiver作为第四大组件,主要完成广播接收的监听注册以及广播的转发,功能是监听系统内部的事件的触发。3系统需求分析
目前。Android手机接入互联网的方式有GPRS、3G和WIFI等等,要使手机能够与PC进行数据交互,我们要采用WIFI连接,网络传输使用TCP/IP协议。Android的应用程序开的发所用到的是基于Java的一套语言。Java可以对于网络编程提供良好的支持,与网络相关的编程都在我们的工具包内,利用java中的网络编程技术即socket编程,用TCP协议进行传输就可以实现数据之间的传输,最终来对PC的远程控制。
本设计系统的主要需求如下:
(1)连接界面功能
用户在启动应用程序前,首先要保证PC的网络正常连接,设置好手机的移动网络,保证PC和手机在一个局域网中。用户启动应用程序后,首先出现的是连接界面。该界面主要包括查找PC,将PC返回信息显示在界面的列表—b编辑指定PC的lP地址,包括输入和删除:根据连接状态,分类显示PC信息,显示程序的帮助信息和退出程序。
(2)数据库系统功能
数据库主要是存储管理发送广播后PC返回的信息,包括PC的IP地址、主机名、连接状态等。在一个家庭网络中,可能有多台同时运行着的PC,建立数据库,能够让用户自由选择,方便用户管理和远程桌面功能:远程桌面功能是能够随时对PC进行关机处理,能够对电脑桌面进行实时截屏并且保存在本地.能够在PC与手机之间自由传输所需要的文件以及资料。
4基于Android远程控制C/S的设计
4.1系统的总体设计流程
当使用这款软件的用户携带Android智能手机打开这款我们所开发的应用程序的时候。手机端连入和PC在同一个网络段的网络,在手机的连接界面输入要远程控制的电脑的IP地址以及端口号,此时Android手机与电脑之间通过Socket通信,就可以完成两者之间的数据交互以及其他所需要完成的功能,手机与电脑如何通信图2所示:
4.2数据交互网络协议
实现PC机与网络之间的通信在移动终端网络,开发人员首先必须要先解决如何搜索并且连接到同一个网络中的主机,当连接到指定主机之后,采用哪种传输协议进行数据的传输。在TCP/IP这类协议。IP层主要给在这个网络段的网络上的每台计算机分配一个IP地址,这些计算机就可以在这个局域网中进行通信了,并且每个IP地址都唯一的对应着Internet上的每个主机。从传输层的数据包传输IP数据报的处理请求,包到IP。通过路由转发。选择适当的网络路径。将数据报告给相应的网络主机接口。在网络上传输的方式编程,Android提供了一个特殊的API接口,用户不需要关心网络层是如何包装和处理数据。本文所设计的远程控制系统,客户端与服务器数据通信的基础是采用TCP协议和UDP协议。Socket有两种通信方式:基于TCP协议的通信方式和基于UDP协议的通信方式。两种通信方式都能完成网络数据交互,但是发送方和接收方所使用的协议要求一致。从下图中可以看出,应用程序中通过Socket进行网络传输,在网络层上,通过口协议,封装处理数据,在通信信道中进行数据传输。在传输层上。可以采用TCP或者UDP。但是要求通信双方采取的协议要一致。下图3为Socket通信模型:
4.3服务端的研究
服务器端是Android的一个Service程序,随着用户开启运行在PC上的服务器端而自动启动,始终在后台运行,设置好特定的端口号,监听客户端发送过来的请求,然后进行连接.根据客户端发过来的不同数据,经过分析处理之后,从而完成特定功能模块的响应,下面给出了服务器功能模块划分。
(1)端口监听
端口监听模块的主要作用是接收客户端发送过来的广播,并按照要求返回服务器相关信息。android服务器对系统后台运行绑定到特定的口。监测客户的要求。当接收到客户端广播消息时。反馈消息。返回当前服务器的IP地址,主机名,连接状态信息等等,从而进行连接。
(2)事件处理
服务器采用基于回调的事件。服务器端通过TCP传输协议接收客户端发送过来的按键事件。通过对数据的解析,获取事件类型。然后转交给事件处理器。处理器将事件压入事件栈,通过系统回调,完成此次事件的相应。以完成相应的功能。
(3)远程桌面功能
服务器远程桌面主要是完成电脑桌面的截屏、图片的保存以及发送。读取framebuffer来获取系统显示信息的数据,转换成图片文件。最后要读写framebuffer的内存,必须首先要打开framebuffer设备,获取显示设备的信息,如图片的信息、像素的数据量等等。最后将framebuffer内存中的数据映射到用户进程空间,转换成我们手机能够支持的图片格式,发送到客户端。
4.4客户端的研究
客户端主要负责发送指令给我们的服务器端让其完成相应的功能,首先和服务器端进行连接,然后就可以在两者之间进行数据的传输和一些其他的交互,在本次客户端的结构中我们使用的当前比较流行的MVC模型,能够将我们的客户端更加的清晰明了。在本文中,View是连接界面、键盘界面、鼠标功能界面和远程桌面界面的图形设计。Model是指数据库、鼠标功能模块、键盘和远程桌面功能模块的具体代码的实现。Controller是控制用户界面的跳转和完成各个功能模块的调用。
客户端的整个系统框架可以自上而下分为三层。最上面一层主要是实现客户端与用户的交互,包括用户登录连接服务器、发送控制指令信息、鼠标的滑动操作以及服务器截屏后所得到的图片在客户端的显示。第二层是数据处理层,主要是对获取控制指令后,提取指令有用信息,在指令发送前进行发送排序;获取鼠标路径,将路径坐标按照鼠标滑动时间进行循环发送:处理服务器的返回数据的信息,比如服务器IP信息和图片的传输等.这些信息将封装在报文中发给手机的客户端,这时候客户端就知道了服务器的地址以及一些其他的信息,这时候我们用户者就可以输入服务器的IP地址来进行连接服务器端,发送相应的指令给服务器端。最下面一层是将发送数据的不同,采用不同的网络协议,对数据进行封包发送。在客户端系统,用户界面和功能模块,以简化程序的复杂度,简化后续程序的修改和扩展,采用MVC模式的设计思想,程序结构更直观。
5系统测试
该系统是在PC远程控制软件开发的Android平台,用户可以使用Android手机中安装的应用程序。通过家庭局域网上的WlFI连接到同一WlFI下的电脑。客户端发送请求到服务器,接收服务器响应后,采取了不同的方式。从而实现手机远程控制电脑的目的,实现用手机控制电脑的功能。本文设计的远程控制系统的功能测试主要分为连接界面测试、主界面:实现远程对电脑关机,对电脑截屏,文件的传输。
5.1连接界面测试
连接界面主要功能是输入ip地址以及端口号搜寻同一WlFI下的PC,连接成功后进入主菜单界面,下面为详细的服务器端和客户端连接界面演示
5.1.1服务器端界面
5.1.2客户端端界面
5.2主菜单界面测试
(1)实现远程对电脑关机
点击手机上的关机按钮,电脑上会出现注销提示,随后PC自行关机。
(2)对电脑截屏
点击截屏按钮,能够实时的对电脑进行截屏,在底下赋予时间,并且可以对截屏下的图片进行保存。
(3)文件的传输
选择电脑上的文件,能够实现从PC端传输到安卓手机上。
6总结
Android这种开源的系统,经过多年的发展与探索,替代了以前“塞班系统”,如今作为一种主流的移动终端开发系统,其应用开发不仅仅局限于智能手机,Android与其他终端通信就是其扩展应用之一。在本次课题中充分运用了当前非常先进的计算机相关的知识,设计开发出了一款手机远程控制软件。能够使用户不在电脑旁依旧能够对电脑进行远程操作的功能,并且实现简单的文件管理。
参考文献:
[1]文军,吕勇强.基于Android手机的远程访问和控制系统[J].计算机应,2011,31(02):559-561
[2]单李旺.Android操作平台的研究与应用[D].天津:南开大学信号与信息处理专业硕士学位论文。2009.
[3]杨志伟,许辉泽.基于Android的远程终端控制系统[J].科技信息,2011(21):512-514.
[4]江燕良.基于Android智能终端的远程控制系统[J].电子技术应用,2012(08):129-132.
[5]李刚.Android疯狂讲义[M].北京:电子工业出版社,2011:88.