物联网技术入门——系列文章3
来源:互联网 发布:软件开发行业市场前景 编辑:程序博客网 时间:2024/06/06 18:30
手机APP已经成为物联网用户终端最主要的形式,这次写博客主要是通过编写温度监测的应用程序这个例子,简单介绍一下Android APP开发的入门知识。
物联网技术入门——系列文章1
物联网技术入门——系列文章2
1.Andriod开发环境搭建
Andriod开发环境搭建过程如下:首先是JDK的安装。JDK作为java语言的开发工具包,是开发和运行java程序的基本前提。在安装完成后,打开cmd窗口,输入java-version检查JDK安装是否成功。其次是eclipse的安装。eclipse是一个开放源代码的、基于Java的可扩展开发平台。在安装完eclipse之后,需要在环境变量里设置PATH变量的值,添加JDK的bin目录的路径,否则elipse不能启动。操作步骤为:在计算机的属性中找到高级系统设置,打开环境变量,在系统变量中新建。然后是ADT的安装。将A/DT-15.0.0.zip复制到eclipse文件夹下,点击eclipse.exe,进入菜单中的“Help”->“Install New Software”。安装ADT。最后是Andriod SDK安装。解压Andriod-sdk-windows_rar到当前文件,进入菜单中的“windows”->“Preferences”,后创建AVD。在完成对开发平台及各开发工具包的安装后,通过import导入工程将编写好的整个Andriod源码导入eclipse,再对程序进行编译和运行。启动AVD,将andriod apk文件安装到Andriod设备上,搭建好的开发环境如下图。
2.Android 工程文件介绍
一个Android工程最重要的两个目录是src、res。
src目录中放置源文件,我们编应用程序时主要在这个目录下写代码。本程序主要包括三个Activity:Application应用程序、MainActivity通信连接程序、RtchatsActivity温度监测程序其中,应用程序部分主要将套接字socket定义为全局变量,使其在整个应用程序运行的过程中都起作用。通信连接程序部分,客户端的socket通过描述它要连接的服务器的IP地址和使用的端口号,通过服务器端的响应,从而完成客户端socket与服务器socket的连接。温度监测程序主要分为两个线程:主线程与子线程,主线程与子线程通过对定时器操作完成数据的接收及刷新显示。
res目录中放置的是应用的资源文件,其中layout目录中放置用到的布局文件,在设计应用程序的UI时在此目录下。例如我设计的这个程序就有两个UI,其中activity_main.xml用于网络连接的界面布局设计,rtchat.xml用于温度监测界面布局设计。
3.应用程序的设计逻辑
对于终端请求连接程序,在application应用程序中将socket定义为全局变量后,建立socket连接,由客户端的套接字提出连接请求,通过socket描述它要连接服务器套接字,指出服务器端的地址和端口号,当服务器端套接字监听到或接收到客户端套接字的连接请求时,它就响应客户端套接字请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。对于监测显示界面操作而言:先输入目的IP和端口号,点击连接,在连接成功后,点击实时温度监测,进入温度监测界面。
温度监测的Activity包括两个线程,主线程负责图形绘制,子线程负责请求温度数值。之所以使用两个线程,是为了避免在数据通信的过程中出现阻塞问题,导致软件卡死。
主线程软件工作流程:首先通过create()函数进入主界面,完成温度采集初始化的任务,随后创建socket数据收发的子线程,创建并启动定时器New Timer,程序设定创建的定时器每300ms进入定时器Handle处理函数,启动子线程,在子线程中完成数据的接收过程,并返回消息给主线程,当主线程判断子线程数据接收完毕后,刷新当前的温度及温度监测曲线,继续等待定时器时间消息。若数据接收未完成,主线程继续等待自子线程数据接收完毕。
子线程软件工作流程:首先客户端通过子线程入口,向服务器发送温度数据请求gettemperature(),随后子线程中接收到服务器端发送的温度数据,数据接收完毕后,由子线程向主线程发送数据接收完毕的消息,然后进入主线程消息处理函数。
完成后的软件界面如下:
这里仅写了局域网内的温度监测,实际上我还借助yilink的第三方服务器实现了远程的温度监测,可以去的CSDN账号下下载源代码,如果积分不够可以邮箱联系我。
- 物联网技术入门——系列文章3
- 物联网技术入门——系列文章2
- 物联网技术入门--系列文章1
- 一篇文章,读完物联网技术精华
- Netty技术系列文章_Netty入门
- 物联网操作系统系列文章之-软件平台的力量
- 基于FreeRTOS与MQTT的物联网技术应用系列——步进电机控制(一)前言
- Netty技术系列文章_Netty的铺垫NIO入门
- 物联网平台系列 - 开源技术平台
- 物联网核心安全系列——物联网安全需求
- 物联网核心安全系列——车载物联网的加密防盗版
- GPRS开发系列文章之进阶---联网
- 【物联网】技术导论(入门介绍篇)
- 物联网核心安全系列——智能门锁安全问题
- 物联网核心安全系列——智能监控安全问题
- 万物皆可联网——《Android物联网开发从入门到实战》
- SVM入门系列文章
- Hadoop入门系列文章
- Mysql创建方法语法
- 不要用子类!Swift的核心是面向协议
- 关于Fibonacci博弈的一些学习
- [PlantSimulation]User Interface应用(二)
- linux 并发 同步
- 物联网技术入门——系列文章3
- 引入布局
- 【TV Picture Quality
- 文件初接触
- anroid边框阴影-圆角阴影-渐变阴影
- 二分查找
- Beam学习笔记(2):Flink Runner简介
- 重装系统
- 单片机的IO口