1.创建Android人体红外检测程序工程项目
(1)打开Android Studio开发环境,在项目选择对话窗体界面上,选择Start a new Android Studio Project项,如图5-11所示。
图5-11 新建工程对话框
(2)在如图5-12所示的创建Android工程对话框中,应用程序名称输入PersonNewApp,单击“Next”按钮。
图5-12 输入Android项目名称
(3)选择合适的Android SDK版本,这里手机和平板设备选择API22版本,如图5-13所示。
图5-13 选择Android SDK版本
(4)在添加Activity的对话框内,选择“Empty Activity”模板,单击“Next”按钮,如图5-14所示。
图5-14 选择创建的Activity样式
(5)在定制Activity的对话框内,设置Activity Name为“MainActivity”,Layout Name为“activity_main”,单击“Finish”按钮,如图5-15所示。
图5-15 设置文件名称
(6)Android人体红外检测程序项目创建完成之后,会自动打开项目开发主界面,在Android Studio的主界面上,除了菜单工具栏外,主要是项目结构与项目开发两栏,默认打开activity_main的布局文件和MainActivity.java文件,如图5-16所示。
图5-16 人体红外检测程序开发主界面
2.人体红外检测程序窗体界面设计
(1)打开activity_main文件,显示Android的设计界面,然后在AppTheme下拉列表中选择AppCompat.Light.NoActionBar主题选项,如图5-17所示。
图5-17 选择主题选项
(2)设置主题风格完成之后,显示Android的设计界面,左边界面显示设计效果,右边界面显示控件摆放的轨迹,如图5-18所示。
图5-18 选择显示主题模板
(3)选择activity_main文件的Text选项,显示界面的XML代码,项目界面布局默认采用约束布局方式,如图5-19所示。
图5-19 activity_main文件XM L代码
(4)通过修改ConstraintLayout为LinearLayout,将项目的约束布局方式修改为线性布局方式,如图5-20所示,显示界面的XML代码。
图5-20 设置项目线性布局方式
(5)修改完成之后,选择activity_main文件的Design选项,在Component Tree栏显示为LinearLayout,如图5-21所示。
图5-21 项目界面的线性布局效果
(6)选择LinearLayout属性,在orientation方向属性栏中选择vertical,即垂直对齐方式,如图5-22所示。
(7)在对齐方式gravity属性栏中选择,即顶部中间对齐方式,如图5-23所示。
图5-22 设置orientation属性
图5-23 设置gravity属性
(8)在Palette工具栏中,选择LinearLayout(horizontal)布局控件拖动到界面上,同理,选择TextView文本控件拖动到界面上,如图5-24所示。
图5-24 设置标题布局和文本控件
(9)选择LinearLayout(horizontal)布局控件,在属性栏中,设置layout_height属性值为wrap_content,gravity属性值为,如图5-25所示。
(10)选择TextView控制,在属性栏中将text属性值设置为“人体红外检测程序”,文字大小选择textApperance属性为DeviceDefault.Large,如图5-26所示。
图5-25 水平布局控件属性
图5-26 设置标题文本属性
(11)标题文本控件设置完成之后,显示如图5-27所示界面效果。
(12)为了在界面上显示相应图片,这里需要将程序中两种张图片复制到mipmap-mdpi目录下,如图5-28所示。
图5-27 标题显示效果
(13)将Palette工具栏中LinearLayout(horizontal)布局控件拖动到Component Tree栏上,在属性栏中设置Layout_height属性值为wrap_content,gravity设置为center,如图5-29所示。
图5-28 加入程序显示图片
图5-29 设置LinearLayout(horizontal)布局控件属性(www.daowen.com)
(14)将Palette工具栏中imageView控件拖动到Component Tree栏上之后,自动出现图片选择对话框,这里从Project中选择“无人进入”图片,单击“OK”按钮,如图5-30所示。
图5-30 选择“无人进入”图片
(15)图片设置完成之后,界面显示效果如图5-31所示。
图5-31 “无人进入”图片显示
(16)同理,在Palette工具栏中,选择其他相关控件拖动到Component Tree栏上,设置相应属性值之后,显示如图5-32所示。
图5-32 控件拖至Component Tree栏
(17)为了将Button按钮显示颜色效果,在其background属性栏中选择…项,出现如图5-33所示的对话框,选择Color所对应的颜色,如#FF5AEF61,单击“OK”按钮。
图5-33 设置Buton背景颜色
(18)选择相应的控件之后,在属性栏中设置相关属性值,人体红外检测程序界面设计完成之后如图5-34所示。
图5-34 人体红外检测程序界面设计
(19)将图5-32中主要控件进行规范命名和设置初始值,如表5-1进行说明。
表5-1 程序各项主要控件说明
3.人体红外检测程序功能代码实现
(1)本项目Button按钮单击事件采用在activity_main.xml文件中Button标签内添加android:onClick="OnClickNet",如图5-35所示。
图5-35 添加onClick方法名
(2)在MainActivity.java文件中,添加OnClickNet方法,如图5-36所示。
图5-36 实现OnClickNet方法
(3)根据界面中所设置的EditText控件、ImageView控件和Button控件,在MainActivity类中定义对应的控件变量,同时定义网络通信的Socket套接字、输入流以及接收线程对象等。在onCreate方法中通过调用findViewById方法将控件的ID号转变为对象变量,EtIp=findViewById(R.id.editTextnetip)。
具体代码如下:
(4)在连接网络按钮事件处理方法中主要完成线程的启动,实现网络连接功能,同时开启接收线程,实现WIFI网络中人体红外传感器数据到来之后接收。在断开网络按钮事件处理方法中主要完成输入流和套接字关闭功能。
具体代码如下:
(5)为了通过启动Thread线程连接WIFI网络,需要实现Runnable接口,在接口Run方法中实现套接字对象,并绑定服务器IP地址和端口号,另外为了接收服务器端发送过来的人体红外数据,需要再次启动ReceivedThread线程进行接收。
具体代码如下:
(6)为了在连接WIFI网络成功之后,能够接收服务器端发送的人体红外数据,需要开启ReceivedThread线程进行接收,这里通过继承Thread线程类,实现ReceivedThread线程类,并在ReceivedThread线程类构造方法中传递套接字对象作为参数。
具体代码如下:
(7)在ReceivedThread线程类中需要实现Run方法,在Run方法中通过输入流的Read方法读取服务器发送的人体红外数据,并解析数据。首先判断数据是否为空,当不为空时,再判断字符串是否以“666666”开始,如果成立,表示检测当前环境有人;否则判断字符串是否以“555555”开始,如果成立,表示检测当前环境无人,最后以Message对象作为参数调用Handler对象的sendMessage方法,发送给UI主线程。
具体代码如下:
(8)当Handler对象调用sendMessage方法之后,将包含人体红外信息的Message对象发送至UI主线程,主线程中的Handler对象再次调用handleMessage方法处理Message对象中的消息数据,并根据what属性值分别将有人和无人图片显示在界面中。
具体代码如下:
(9)为了让程序在移动端通过WIFI网络连接物联网网关设备中的服务器,需要将AndroidManifest.xml文件打开,添加网络访问权限,如图5-37所示。
图5-37 添加网络访问权限
4.人体红外检测程序下载至移动端运行
(1)程序编译完成之后,单击红色的三角运行按钮“”,将人体红外检测程序下载至移动端,如图5-38所示。
图5-38 单击程序下载按钮
(2)将功能开关挡位切换到移动端挡位之后,嵌入式网关模块将传感器采集的数据信息通过WIFI模块无线发送至手机设备端,从而无线接收各种采集数据,如图5-39所示。
图5-39 移动端通信挡位
(3)当人体红外检测程序下载至移动端之后,首先将移动端WIFI网络连接到物联网设备WIFI模块的AP热点中,然后运行程序,单击“连接网络”按钮,显示如图5-40所示人体红外信息。
图5-40 移动端显示人体红外信息
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。