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