基于Android手机的家电遥控终端系统设计
2015-01-17曾庆磊魏忠义
曾庆磊,魏忠义
(西安工程大学 陕西 西安 710048)
近几年来,移动互联网在全世界呈现出蓬勃发展的态势。手机移动终端设备己经不仅仅只是用来打电话发信息。借助于智能设备操作系统,手机已经具备丰富多样的功能,跨越了仅仅将通信作为唯一目标的模式,而变成具有更多市场的手持终端控制设备。将Android移动操作系统为平台的智能手机和智能家居的概念结合起来,以智能手机作为智能家居的控制端,以Android操作系统为平台,开发特定的应用程序安装在智能手机上,通过操作智能手机上的应用程序实现对家居生活中各种家用电器(如电灯、电视、空调等)的远程控制和管理,即可以把智能手机当作遥控器来控制家电的各种状态。由于智能手机体积小便于携带,扩展性强,而且凭借其强大的计算和存储能力从而可以实现丰富复杂的遥控功能,是作为智能家居的手持控制终端的理想选择[1]。Android智能设备操作系统凭借着其优异的平台性能、高度开放的发展策略、和众多战略伙伴的支持,已占据了庞大的市场份额。基于Android系统的智能手机作为智能家居的控制终端具有广阔的市场潜力。
1 Android应用程序开发环境的搭建
Android是IT巨头谷歌公司推出的一款移动设备操作系统,作为移动设备的平台,其软件层次结构自下而上共分为4层,依次为应用程序层、应用程序框架层、系统运行库层和Linux内核层[2]。Android以Java作为开发语言,以开源IDE Eclipse作为开发平台,使用Android SDK、Java开发包JDK、开发插件ADT进行软件开发与调试[3]。下面介绍在windows 7系统下开发Android应用程序的环境搭建步骤[4]。
1)JDK 的安装
通过Android系统构架可以知道,要进行开发需要下载java的开发环境,首先需要下载完整的JDK开发包。Android SDK需要JDK5以上版本,下载稳定性良好的JDK6,双击可执行文件,接收许可协议,完成安装。为了使用java工具进行编译、运行 需要配置java环境变量,采取相对路径的方法,需要配置的3个环境变量:JAVA_HOME CLASSPATH和PATH。
2)安装配置Android SDK和Eclipse
开发Android应用程序需要下载相关的Android SDK。根据自己电脑的操作系统版本下载Android SDK软件包,下载完成后,打开目录找到SDK Setup.exe可执行文件,双击该文件即可安装。Android SDK包含了Android应用所依赖的jar文件 运行环境及相关工具。并把Android SDK下的tools目录添加到windows7的PATH环境变量中。
3)安装集成Eclipse开发环境
下载Eclipse3.5开发包,完成安装。启动Eclipse,选择Help>Install New Software,在出现的对话框里单击Archive按钮,浏览和选择已经下载的ADT插件压缩文件,ADT即Android Development ToolKit Android开发工具包。单击Next按钮,弹出对话框重启Eclipse即可。 ADT安装完成后,在Eclipse中单击Window|Android SDK Manager命令,启动Android SDK Manager,在线下载相关开发工具、文档、示例代码等。
4)创建 AVD
在完成上述安装配置过程后 就可以创建AVD。在Eclipse中单击Window|AVD Manager命令,启动Android虚拟设备管理器,设置基本信息参数,单击New按钮,创建一个虚拟设备。 AVD提供了近乎真实手机的虚拟环境,以便于开发者进行调试和运行。完成综上内容就可以开始进行软件内容开发了。AVD界面图如图1所示。
图1 Android模拟器界面图Fig.1 The Android emulator interface diagram
2 智能家居远程家电遥控的构成
如图2所示整个系统主要包括3个部分:Android智能手机控制终端,家庭网关服务器和家用电器设备。用户使用智能手机通过网络 (GPRS、3G、WiFi)连接到家庭网关服务器后,然后通过手机终端发送带有控制指令的数据包,服务器收到数据包经过处理之后,再由服务器发送控制命令到相应的家电控制器上,以达到对各种家用电器的管理和控制[5]。本文中主要是智能手机控制终端的设计。
图2 家电遥控整体框架图Fig.2 Home appliances remote control overall frame
3 Android手机控制终端的设计
3.1 登陆功能设计
家居设施的主人及其家人才有对家电有掌控权,其他人不具备使用家电控制系统来控制家电的权利,因此要采取身份验证的方式来决定家电系统的使用权。验证的方式是通过输入用户名与密码是否和服务器中的数据库保存的数据一致,只有通过验证的用户才可以进入家电控制系统的主功能界面。具体的流程如图3。
图3 登陆功能流程图Fig.3 Flow chart of landing function
用户在点击应用软件图标后,系统会跳转到登陆界面,输入自己设定好的用户名和密码,点击登录按钮,系统会进行验证。系统把用户输入的用户名与密码与家庭网关服务器中数据库所保存的数据逐一比较,只有用户名和密码与数据库中保存的完全匹配,系统才会跳转到主功能界面,如二者有其一不与数据库吻合,登录就会失败,系统弹出“用户或密码错误,请重试!”的对话框,然后跳转回登陆界面以供用户重新登陆。
3.2 控制功能设计
用户成功登录系统进入到主功能界面后,主功能界面提供用户各种可供操作的家电应用模块,用户根据控制需要点击对应的家电控制模块,进入功能控制界面,选择要控制的功能后,系统向家庭网关服务器提供控制请求,网关收到请求后经过信息处理,然后把控制信息发送给相应的家电。进行家电控制时,家电控制程序首先判断手机终端是否与家庭网关服务器建立连接,如果已经连接,就可以直接通过进程间通信方式发送控制消息到家庭网关,网关收到请求后经过信息处理,然后把控制信息发送给相应的家电。如果没有连接,在手机终端系统中需要控制的家电模块中输入网关的ip地址及控制家电模块的端口号连接家庭网关服务器,然后直接发送家电控制消息到家庭网关服务器。控制功能流程图如图4所示。
图4 控制功能流程图Fig.4 Flow chart of control function
3.3 手机终端与家庭网关服务器建立连接
实现手机终端与家庭网关服务器之间的连接涉及Socket通信。 Socket通信是一种基于客户/服务器模式的通信模式,使用 Socket能够实现两个应用程序的网络连接[6-8]。
图5展示了Socket编程实现网络连接的过程。
图5 Socket通信流程图Fig.5 Flow chart of Socket communication
智能手机终端发送到家庭网关服务器的控制指令是通过socket通信协议来完成的。智能手机作为Socket的通信客户端,家庭网关作为Socket通信的服务器端,手机发送控制命令请求连接到家庭网关,服务器监听到请求后建立连接。
客户端的通信步骤如下:
1)建立客户端socket服务。指定要连接的服务器的ip地址和端口号
2)获取socket流中的输出流。将数据写到该流中。通过网络发送给服务端。
3)获取socket流中的输入流,获取服务端反馈的数据。
4)通信结束后,关闭客户端socket服务资源。
服务器端的通信步骤如下:
1)建立服务端的 socket服务,ServerSocket();开始监听来自客户端的连接请求;
2)获取连接过来的客户端对象。通过ServerSokcet的accept方法。
3)连接成功后,服务端与客户端之间进行数据传输。
4)通信结束后,关闭服务端socket服务。
智能手机作为客户端发起Socket请求,主要程序和注释如下:
Socket s=new Socket(ip,port);//创建客户端的 socket服务。指定目的主机和端口
OutputStream out=s.getOutputStream();//为了发送数据,应该获取socket流中的输出流。
out.write(msg.getBytes()); //写数据,字符串 msg 是需要传递到服务器的数据
out.flush(); //刷新输出流
InputStream in=s.getInputStream();
//接收服务端传回的数据,那么要使用客户端对象的读取流来读取数据。
String txt=reader.readLine();//按行读取收到的数据并放到字符串变量txt中
out.close(); //关闭输出流in.close(); //关闭读取流
s.close(); //关闭 Socket通信
家庭网关作为开启一个线程来实现和客户端的Socket通信,主要程序和注释如下:
ServerSocket ss=new ServerSocket (port); //建立服务端socket服务。并监听一个端口。
while(true){
Socket s=ss.accept ();//通过 accept方法获取连接过来的客户端对象。
InputStream in=ss.getInputStream ();//读取获取客户端发送过来的数据,
String str=in.readLine();//读取从客户端接收的数据,字符串 str用来保存接收到的数据If(str==“……”)…… //对读取到的数据进行操作
OutputStream out=ss.getOutputStream();//返回结果给客户端。
in.close(); //关闭输入流out.close(); //关闭输出流
ss.close(); //关闭 Socket通信}
4 家电控制终端系统的实现
家电控制终端系统在经Eclipse集成开发环境下完成设计、开发、调试后,可以在AVD模拟器上完好的运行,同时生成的后缀名为.apk应用软件也可以安装在Android智能手机上成功的运行。图6所示为终端系统在模拟器上生成的登陆界面,在用户正确的输入用户名和密码后,点击登录按钮,就可以跳转到终端系统的主菜单界面,如图7所示。用户可以在主菜单界面上选择和操作自己想要控制的家用电器。
图7 主菜单界面图Fig.7 Main menu interface diagram
如图8,本终端系统包括了家庭设施中的灯光控制、空调控制、电视控制和洗衣机控制
灯光控制主要完成的功能有:客厅卧室厨房卫生间各个房间的电灯开关;
空调控制主要完成的功能有:开关控制温度调节 ,模式转换,风速调节,扫风功能 ;
电视控制主要完成的功能有:开关、选台、音量调节、电视菜单等;
洗衣机控制主要完成的功能有:洗涤、脱水、烘干、消毒。
如图所示依次是灯光控制、空调控制、电视控制、洗衣机控制的功能控制界面。
5 结束语
本文主要介绍了基于Android智能手机的远程家电控制的终端系统的设计。包括终端系统开发环境的搭建 ,登录功能及控制功能的设计及手机端与服务器端之间的通信,最后在Eclipse集成开发环境下实现了该远程家电控制的终端系统。在科技迅速发展的时代 ,智能移动设备与智能家居概念的结合能够满足人们倾向于追求方便高效舒适安全的现代化生活 。基于Android智能手机的远程家电控制终端系统将更富时代气息,更有优势,必然能获得越来越多的市场认可,走进人们的家居生活中。
图8 家电控制界面Fig.8 Home appliance control interface
[1]张锟.基于Android手机的智能遥控器设计[J].网友世界,2012(9):39-41.ZHANG Kun.Design of intelligent remote control device based on the Android mobile phone[J].Internet World,2012(9):39-41.
[2]李波,史江萍,王祥凤.Android4.X从入门到精通[M].北京:清华大学出本社,2012.
[3]王雷,蓝箭,陈雪娟,等.基于Android平台的无线WiFi控制方法[J].微型电脑应用,2012,28(7):58-61.WANG Lei,LAN Jian-chen,XUE Juan,et al.The wireless access control method based on the Android platform[J].Microcomputer Applications,2012,28(7):58-61.
[4]李骏,陈小玉.Android驱动开发与移植[M].北京:人民邮电出版社,2012.
[5]陈莉,付蔚.基于Android的远程家电控制终端设计[J].山西电子技术,2012(5):60-62.CHEN Li,FU Wei.Based on the Android remote electrical home appliances control terminal design[J].Journal of Electronic Technology in Shanxi,2012(5):60-62.
[6]邢欣.家居服务中的智能终端控制系统设计与应用[D].南京:南京邮电大学,2013.