在上一篇文章介绍了MQTT的原理以及其在NodeMCU上运用实现一些简单的物联网
http://www.jianshu.com/p/701f4d31029f
但没讲Android APP怎么实现的,那这篇将介绍MQTT协议在Android平台的运用,除了可以用来控制智能硬件,还常实现消息推送和即时通讯im。下面的例子用它来实现一个简单的聊天室
Android中使用MQTT协议
添加依赖
在gradle中添加依赖,引入相应的库
权限声明
|
|
这些权限不是危险权限,不用运行时申请
MQTT支持类
MqttAsyncClient是mqtt支持类,创建时要要传入服务器host,port以及设备标识clientID(不同设备id不能相同)
接着连接服务器,并对连接状态进行监听
getOptions()方法是对连接信息进行配置,如用户名,密码(一般服务器内不设)
|
|
最后对消息及连接进行监听
获取并配置好MqttAsyncClient 后就可以调用相应方法订阅Topic接收消息
subscribe(String topicFilter, int qos)
发送某个Topic的消息
publish(String topic, byte[] payload, int qos, boolean retained)
封装
为了方便使用,对相关操作进行封装
相关标识MqttTag
接口MqttListener
运用观察者模式,创建一个Service后台监听相关状态(写的不太规范…)
简单的聊天室
源码https://github.com/biloba123/ChatRoom
开源仓库里还有些其他mqtt示例