概述
摘要:作为物联网控制APP制作系列文章的最终版,本文带给大家的福利是让大家学会制作完完全全自己可控的安卓APP。与前几篇文章介绍的使用第三方平台自动生成、第三方平台帮助打包、以及android studio制作框架显示IoT Studio制作的控制页面相比,最大的优势是源代码可控,其次是免费(对于开发者而言)。难点是需要掌握的技术太多。本篇文章尽量详细地介绍实现的基本原理以及操作步骤,并最终提供可以正常编译的源代码,让您既有理论学习,也有实践对象。
实现的效果如下:
所用的软件环境:win7 x64,android studio 3.5.1。
目录
1.为什么第三方平台要收费?
2.自己做android studio程序难在哪里?
3.自己做android studio程序的基本思路
4.android studio制作物联网控制APP实战
5.结论
1.为什么第三方平台要收费?
因为物联网控制系统的高门槛,第三方平台设计的这些在线产品凝聚了大批程序员的辛勤劳动。试想你学会了之后,会不会通过这一项技能去找工作,或者做项目,那么找工作、做项目的目的又是为了什么?换位思考一下就明白了。
第三方平台提供优质的服务,你支付合理的价款。如果你要免费,那也可以,花几十乃至上百倍的时间和精力去学习如何来做吧。
2.自己做android studio程序难在哪里?
难在调试。
做嵌入式的老程序员一定明白这个道理。
你认为所有的代码都没问题,可就是调不通。有时一个标点让你困住一个月。
本文也是一样,看似简简单单的源代码,其实让它成功生成apk文件,与云平台成功通信之前,已经解决了无数的问题,熬了很多个夜。
或者说,有的代码即使给了你,生成了安装包,最后也不能与云平台通信,不能控制物联网设备。
物联网控制app就是这样,它不是一个简单的本机activity,自己操作就行了,而是要与云端通信,与现实世界的物联网设备通信才算是达到目标。
3.自己做android studio程序的基本思路
无论是第三方还是自己做,核心都是为了实现通信数据的传输。能坚持看到这里的同学,默认你已经掌握了MQTT的基本知识,如果还没有掌握,请自行在CSDN查资料学习。
我简单形容一下,MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM多年前研发的一种通信协议,能够在低带宽下可靠传输(适应了花费较少的小流量包或者物联网卡),最开始并不是为物联网设计,但是在物联网热潮下壮大,几乎成为物联网通信协议的事实上的国际标准。
有需要的同学可以简单浏览一下我的另一篇文章进行了解。我不是MQTT专家,不懂的不多说。
使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(五)---MQTT.fx模拟设备连接阿里云
从上文中可以了解到,可以在PC端使用MQTT.FX软件来连接阿里云物联网平台,订阅/发布消息。
不过要想与阿里云物联网平台成功通信,需要对MQTT客户端进行设置,关键的有几个参数,比如Broker Address,Broker Port以及Client ID。其中Client ID是几个参数经过加密算法(阿里云平台的类型是hmacsha1)计算出来的。
需要加密?当然了。要不然怎么保证物联网通信的可靠性!所以自己用服务器搭建MQTT服务器,玩玩可以,要真的做实际的项目用,建议还是通过大平台来操作。大平台会提供所有必要的安全、加密措施。
有了这些基本的条件之后,就可以顺利连接云平台,开展订阅/发布业务了。
无论是APP,还是云平台,还是物联网终端,其实都是采用的这种订阅/发布方式来通信,它相当先进。
我们用android studio制作自己的APP,核心也就是在APP内部实现自己的客户端,在APP内部按照规定进行加密。然后就可以订阅/发布主题了。能够订阅/发布主题,那么其他的就都是细节问题了,已经没有什么可以难得到你的了。
阿里云的IoT Studio移动可视化开发,其实相当于网页端已经默认打包好了跟阿里云物联网平台通信的组件/支持包,所以才能实现少量代码甚至无代码的控制页开发。
4.android studio制作物联网控制APP实战
首先需要在阿里云物联网平台新建了产品和设备
如何在阿里云物联网平台新增一个设备
然后准备android studio开发环境,本文使用的是android studio3.5.1,gradle采用的是gradle-5.4.1-all,请注意,采用的是国内镜像,否则可能卡一天不带动弹的。
参考文章:gradle不同版本下载太慢---腾讯做了国内镜像可以直接下载
然后在工程build.gradle中,添加Paho仓库地址。请注意,添加paho仓库的同时,修改一下其他仓库的地址,因为阿里云提供的仓库速度更快。
参考文章android studio设置build.gradle为阿里云云效地址的方法
然后在应用build.gradle中,添加Paho Android Service。
然后在AndroidManifest.xml中添加以下信息
同时添加权限。到这里,就完成了paho的基本设置。
paho是什么?下面是英文解释,是一个用标准C语言写的客户端,保证了非常好的可移植性。
MQTT C Client for Posix and Windows
The Paho MQTT C Client is a fully featured MQTT client written in ANSI standard C. C was chosen rather than C++ to maximize portability. A C++ API over this library is also available in Paho.
In fact there are two C APIs. "Synchronous" and "asynchronous" for which the API calls start with MQTTClient and MQTTAsync respectively. The synchronous API is intended to be simpler and more helpful. To this end, some of the calls will block until the operation has completed, which makes programming easier. In contrast, only one call blocks in the asynchronous API - waitForCompletion. Notifications of results are made by callbacks which makes the API suitable for use in environments where the application is not the main thread of control.
接下来开始连接物联网,在MainActivity里面添加三元组,主题以及客户端信息。
接下来准备连接。计算MQTT连接参数clientId、username和password,并将username和password设置到MqttConnectOptions对象中。
接下来创建一个MqttAndroidClient对象,设置回调接口,然后使用mqttConnectOptions调用connect方法,即可建立连接。
发布消息的封装函数
通过按键发布消息是在OnCreate里面,向阿里云平台发布一个消息“hello IoT”。
最后是编译,解决了所有设置等细节问题之后,成功编译。
将apk文件复制到手机上,然后安装,再运行。
可以发现阿里云物联网平台相应的设备已经在线。
点击PUBULISH按钮,回到阿里云物联网平台下的日志里面查看,成功发布了消息。
至此,一个完整的能正常连接阿里云物联网平台的的MQTT客户端已经调试完成。我们学会了publish,那么就可以subscribe,物联网MQTT通信的核心就掌握了。接下来无论是控制哪个物联网设备,哪个属性,都可以采取类似的操作了。
5.结论
物联网控制APP编程的关键,首先是MQTT客户端,就像是在自己的APP里面内置了一个MQTT.FX软件一样,只不过连接物联网平台的信息都是APP自动计算并连接,不需要自己再根据三元组来计算了;其次是订阅发布功能的实现,物联网通信,采用的是订阅/发布模式,不同的主题对应的不同的属性,掌握了这个技能就能实现千变万化的“物”的操作;最后也是最重要的是调试技能,没有这个技能,就是给你源代码,你也编译不成功,编译成功了,简单改动一下,你又不会了。
本篇文章基于阿里云帮助文档若干篇和自己调试android studio程序的经验而来,不是所有的源代码中的每个单词都是我一个人写的。感谢阿里云的伙伴们,感谢帮助我写一系列文章的各位老师和同学。
希望能帮助到各位。
源代码凝结了很久的劳动,供有需要的朋友。
https://download.csdn.net/download/youngwah292/14015473
欢迎各种抛转。
最后
以上就是英勇果汁为你收集整理的物联网控制APP入门专题(五)---使用android studio直接编写物联网控制APP1.为什么第三方平台要收费?2.自己做android studio程序难在哪里?3.自己做android studio程序的基本思路使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(五)---MQTT.fx模拟设备连接阿里云4.android studio制作物联网控制APP实战如何在阿里云物联网平台新增一个设备MQTT C Client for的全部内容,希望文章能够帮你解决物联网控制APP入门专题(五)---使用android studio直接编写物联网控制APP1.为什么第三方平台要收费?2.自己做android studio程序难在哪里?3.自己做android studio程序的基本思路使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(五)---MQTT.fx模拟设备连接阿里云4.android studio制作物联网控制APP实战如何在阿里云物联网平台新增一个设备MQTT C Client for所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复