一、简单说下MQTT
mqtt是一种轻量级的通讯协议。做过BLE的同学可以理解成一种透传,也可以用在推送上面。要详细了解其概念的同学,传送门在这里。一般的智能设备通过接入mqtt,就可以实现在一个终端控制多台设备,智慧城市应用前景还是挺广泛的。其实在Android上实现mqtt很简单,但是博主还是想整理一下,给大家分享一下博主是怎么开发和测试的。
二、详细说下MQTT
那么,我们在android的开发中是怎么做的呢。下面来详细说下。
1、准备工作
首先,添加库。
在Preject中的build.gradle中添加:
repositories {
maven {
url "https://repo.eclipse.org/content/repositories/paho-releases/"
}
}
然后在Module目录下的build.gradle中添加:
dependencies {
compile 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
compile 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.1'
}
在AndroidManifest.xml中添加:
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<service android:name="org.eclipse.paho.android.service.MqttService" />
2、开始使用
首先给大家介绍几个类:
//客户端
private MqttAndroidClient client;
//连接选项
private MqttConnectOptions mqttConnectOptions;
//客户端ID
private String clienID;
//MQTT的动作监听器,例如连接成功或者消息发布成功或失败等
private IMqttActionListener mSendCallBack;
private IMqttActionListener mConCallBack;
//Mqtt的监听,例如收到消息等
private MqttCallback mCallBack;
然后就是步骤
首先配置连接参数
//配置连接信息
mqttConnectOptions = new MqttConnectOptions();
//是否清除缓存
mqttConnectOptions.setCleanSession(false);
//是否重连
mqttConnectOptions.setAutomaticReconnect(true);
//设置心跳,30s
mqttConnectOptions.setKeepAliveInterval(30);
//登陆的名字
mqttConnectOptions.setUserName("user1".trim());
//登陆的密码
mqttConnectOptions.setPassword("123456".trim().toCharArray());
//超时时间
mqttConnectOptions.setConnectionTimeout(100);
这里的用户名和密码是mqtt服务器配置的,各位同学请按照自家的来。
然后就是给客户端设置监听,用来处理接收消息和连接状态,已经qos 的回调。
mCallBack = new MqttCallback() {
@Override
public void connectionLost(Throwable cause) {
//连接丢失异常
}
@Override
public void messageArrived(String topic, Mq