欢迎在我的公众号aserbao给我留言,无偿服务!同时,欢迎大家来加入微信群二维码讨论群,一起讨论Android开发技术!群二维码定时在我公众号更新!
前言
项目中有用到mqtt,碰巧没人负责这一块,所以毛遂自荐就看了一波,下面是一些简单的使用记录,写得不好,仅供参考。若没有mqtt服务器的朋友,建议先建一个mqtt服务,不然看不到效果。
什么是Mqtt?
MQTT 的全称为 Message Queue Telemetry Transport,是轻量级基于代理的发布/订阅的消息传输协议,它可以通过很少的代码和带宽和远程设备连接。例如通过卫星和代理连接,通过拨号和医疗保健提供者连接,以及在一些自动化或小型设备上,而且由于小巧,省电,协议开销小和能高效的向一和多个接收者传递信息,故同样适用于称动应用设备上。MQTT就包含了以下一些特点:
- 实现简单
- 提供数据传输的 QoS
- 轻量、占用带宽低
- 可传输任意类型的数据
- 可保持的会话(session)
Android 下如何使用Mqtt?
在Android中使用Mqtt可以分为6个步骤:
- 导入mqtt包;
- 配置MqttConnectOptions;
- 调用connect并将配置好的参数写入;
- 通过指定的消息进行消息订阅;
- 向订阅的topic中发布消息;
- 通过mqttCallBack的回调对接收到的消息进行处理;
// mqtt 包导入
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'
implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
导入类:
public class MQTTManager {
private static final String TAG = "MQTTManager";
public static final String SERVER_HOST = "tcp://52.80.116.245:1883";
private String clientid = "2df8aabfb8b6088953664f413a446bbc";
private static MQTTManager mqttManager=null;
private MqttClient client;
private MqttConnectOptions options;
private Context mContext;
private MessageHandlerCallBack callBack;
private MQTTManager(Context context){
mContext = context;
clientid+=MqttClient.generateClientId();
}
/**
* 获取一个MQTTManager单例
* @param context
* @return 返回一个MQTTManager的实例对象
*/
public static MQTTManager getInstance(Context context) {
Log.d(TAG,"mqttManager="+mqttManager);
if (mqttManager==null) {
mqttManager=new MQTTMan