摘 要: 为了实现智能手机对智能家居的远程控制,笔者设计了一款基于Android的智能家居客户端。客户端使用ZigBee-WiFi智能网关将智能手机与智能家居建立连接,采用socket将智能手机和智能家居进行连接通讯,使用开源、移植性高的SQLite数据库储存和管理相应的数据。客户端界面简洁友好,可以显示设备的运行状态,便于用户查看,具有语音控制的功能,可实现一个客户端对所有智能家居设备的远程遥控。
关键词: 安卓; 远程控制; 智能家居;
Abstract: In order to realize the remote control of smart phone to smart home,the author designs a smart home client based on Android.The client uses ZigBee WiFi smart gateway to connect the smart phone and smart home,uses socket to connect the smart phone and smart home,and uses the open source and highly portable SQLite database to store and manage the corresponding data.The client interface is simple and friendly.It can display the running status of the device,which is convenient for users to view.It has voice control function.It can realize remote control of all smart home devices by one client.
Keyword: android; remote control; smart home;
0、 引言
随着智能家居的快速发展,智能家居已经进入们的生活中,也受到更多人的青睐[1,2,3]。目前,智能手机已成了人们生活的一部分,同时也是人与人沟通的一个桥梁。在如今的移动设备中,Android更是占据了移动设备的绝大部分。
为了顺应当今移动端技术的发展趋势,本文设计了一款基于Android的移动家居APP,通过该APP可以实现Android智能手机与家中各种家居的人机交互,实现一个智能手机操控所有家中设备的功能,同时具有语音识别和获取设备信息的功能,用户只需要使用这款APP就可以对家中所有设备进行操控和查看。
1 、系统需求分析
本系统的设计是从用户在日常生活中的实际需求出发,用户可以通过自己的手机对家中的智能设备进行控制和查看。本系统是在Android系统的基础上进行开发,这是考虑到市场上绝大部分手机都是使用的Android系统。智能家居作为一个新兴市场,规模在急剧扩大,凸显出潜在的市场前景,将本系统与智能家居高度结合,能够提升用户体验,简化日常生活中传统家居的繁琐操作[4,5]。用户可以用智能手机通过该APP对家中所有的智能家居设备进行操控和查看,同时该客户端设计更加人性化,风格简约明朗,使用方便,给人一种舒适、美观的体验。
2 、系统功能设计
2.1 、客户端开发环境
本客户端使用Android studio 4.0进行开发,是谷歌公司专门为Android开发而推出的一个集成开发工具。Android studio使用Java语言进行开发,所以必须要具备Java的开发环境,故必须有支持Java程序运行和开发的JDK(Java SE Development Kit),JDK是Java的核心,包含了Java的运行环境JRE(Java Runtime Environment)。
2.2、 功能设计
Android智能家居客户端功能主要包括界面UI设计、远程遥控设计、语音控制设计和数据库设计4个功能
2.3、 界面UI设计
界面分为登录注册界面和主界面。登录注册界面采用相对布局(RelativeLayout)作为总体布局,背景使用木制家具的淡棕色,凸显家居主题,将传统家居和智能家居相结合,给用户一种家的感觉,使界面看起来更友好,中间使用线性布局。本客户端的logo显示在距离顶部1/3的地方,下面依次是账号和密码,账号密码框使用市面上流行的圆角矩形设计,相对于其他图形,人类的眼睛在识别圆角弧形的时候更加容易,同时圆角自身的图形属性则更加柔和、舒适,给人一种安全感和亲密。账号密码使用EditText属性实现,账号使用android:inputType="number",密码使用android:inputType="textPassword"格式,可以使用第三方登录,底部分别是注册账号和找回密码。
主界面分为功能控制界面、语音控制界面和状态查看界面。功能控制界面采用线性布局(LinearLayout)作为总体布局,由底部导航栏功能按钮进入,功能使用网格化排列,在家居比较多的时候可以更直观看到用户需要操控的所有家具,用户可以对自己需要使用的家居进行控制,简单、方便,具体代码实现通过GridLayout网格布局,同时使用RecyclerView实现家居控制信息的滚动,家居开关状态可以通过switch开关进行控制,通过BottomNavigationBar实现底部导航栏,使用BottomNavigationItem.setInActiveIcon()方法来设置导航栏的选中与非选中状态。
语音控制界面采用相对布局(RelativeLayout)作为总体布局,由底部导航栏语音进入,在屏幕中间放置一个圆形按钮,按钮使用本客户端的logo,下方提示按压说话,按钮代码使用点击效果selector,同时添加onTouch和onClick事件来改变按压效果。
状态查看界面采用线性布局(LinearLayout)作为总体布局,由底部导航栏状态进入,本界面可显示状态、家居所在位置等详细参数,家具设备的运行状态和详细参数以列表的形式展示,使用RecyclerView实现状态和详细参数的滚动查看。同时,添加setOnLongClickListener长按事件进行设备的删除和加入常用功能。
2.4、 远程遥控设计
ZigBee是一种崭新的,专注于低功耗、低成本、低复杂度、低速率的近程无线网络通信技术,从应用领域和方向方面来看,ZigBee完全应用在智能手机领域。目前,智能手机领域里的短距离数据传输主要通过蓝牙方式来实现,但相比于蓝牙,ZigBee的功耗更低。Socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用,以实现进程在网络中通信。针对TCP传输和UDP传输,Android提供了Socket、ServerSocket、DatagramSocket、DatagramPackage四个类,通过创建Socket对象就能够打开输入输出流进行通讯。本APP使用ZigBee-WiFi智能网关,用户在连接智能手机与智能家居时需要通过该网关建立连接,基于Socket通信将智能手机和智能家居进行连接通讯,用户可以通过本APP实现对智能家居运行状态的快速设置。
2.5、 语音控制设计
随着时代的不断进步,用户的体验和需求也随之不断上升,使用语音来控制智能家居或将成为一种趋势,对于有老年人和小孩的家庭来说,语音控制似乎更加方便和舒适,且更加高效。百度提供的语音识别功能强大,支持中文普通话、英语、粤语、四川话识别和将录音转为文字,还可以提取语音识别出的文字意图与关键信息,进行分词及找出意图和词槽,并做出回应。本APP使用百度提供的语音识别API,将语音输出,然后转换成计算机可读的字符串发送给硬件设备,从而使硬件做出响应。
2.6 、数据库设计
SQLite作为一款开源的轻型数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。SQLite同时具有简单、灵活、可靠和移植性好的特点,Android针对其封装了特有的API,即使对sql不熟练,也能够很好地操作SQLite数据库。不管如何进行封装,其运行本质都是通过aql语句提交到SQLite上运行,并获得最终想要的结果。
SQLiteDatabase是Android SDK中操作数据库的核心类之一。使用SQLiteDatabase可以打开数据库,也可以对数据库进行操作。然而为了数据库升级的需要以及使用更方便,往往使用SQLiteOpenHelper的子类来完成创建,打开数据库及各种数据库操作。具体操作如下。
(1)创建数据库。
在Android应用程序中使用SQLite,必须自己创建数据库,Android提供SQLiteOpenHelper以帮助创建数据库,只用继承SQLiteOpenHelper类就可以创建数据库。SQLiteOpenHelper类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。SQLiteOpenHelper的构造函数,调用父类SQLiteOpenHelper的构造函数。此方法需要4个参数,允许在查询数据的时候返回一个自定义的Cursor,一般都是传入null。构建出SQLiteOpenHelper的实例后,再调用它的getReadableDatabase()或getWritableDatabase()方法便能够创建数据库。
(2)创建表和索引。
创建表和索引,需要调用SQLiteDatabase的execSQL()方法,然后传入SQL语句,从而达到创建表的目的。
(3)插入数据。
创建一个add Button,在按钮里增加添加相应的数据。首先获取SQLliteDatabase对象db,之后创建一个ContentValues对象values存放sql,values构造完成后调用SQLliteDatabase的insert方法。该方法接收3个参数,第一个参数为表名,第二个参数一般不用,直接null,第三个参数为ContentValues对象。
(4)更新数据。
SQLiteDatabase中提供了update()方法用于对数据进行更新,此方法接收4个参数,第一个参数是表名,在这里指定去更新哪张表里的数据。第二个参数是ContentValues对象,要把更新数据在这里组装进去。第三、第四个参数用于去约束更新某一行或某几行中的数据,不指定的话默认就是更新所有行。
(5)删除数据。
SQLiteDatabase中提供了一个delete()方法用于删除数据,此方法接收3个参数,第一个参数是表名,第二个个第三个参数是用于约束删除某一行或某几行的数据,不指定的话默认就是删除所有行。
(6)查询数据。
SQLiteDatabase中提供query()方法用于对数据进行查询。
3 、结 语
近年来,智能家居发展迅速,不少互联网公司纷纷涉足智能家居产业,虽然智能家居仍未得到普及,但是随着5G等技术的迅猛发展,智能家居在不久的将来势必会进入寻常百姓家中。本文设计的智能家居客户端,实现了智能手机与智能家居的远程连接,从而可以对不同的家居设备进行远程控制和状态查看,大大提升了智能家居的体验,同时本客户端采用市面上流行的Android平台,可使用的设备多,具有较高的推广价值。
参考文献
[1]陈猛.基于Android的智能家居平台研究[J].农家参谋,2020(10):207.
[2]韩贝.SQLite数据库研究与应用[D].南京:南京邮电大学,2019.
[3]凌敏,罗浩武,邹阿金,等.基于Android客户端的智能家居App设计[J].现代计算机,2019(27):80-84.
[4]黎素云,叶展勇,俞晓彤.基于安卓的智能家居系统设计[J].电子技术与软件工程,2019(11):32.
[5]李涛.基于Android的智能家居APP的设计与实现[D].苏州:苏州大学,2014.