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