5步让你的Android应用集成MQTT功能(MQTT V5版本)
这个文档是让你的Android Studio开发的APP快速的集成MQTT功能,既然是添加MQTT功能,假设你现有的APP代码能够正常的编译,我这里就以一个新的MQTT工程为例,如下是具体的操作
第1步-AndroidManifest.xml添加权限
<!-- ************************MQTT连接必要权限************************-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!-- ************************MQTT连接必要权限************************-->
第2步-build.gradle添加MQTT依赖包
/*************************MQTT依赖包*************************/
implementation 'org.eclipse.paho:org.eclipse.paho.mqttv5.client:1.2.5'
implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
/*************************MQTT依赖包*************************/
添加完成后点击Sync Now同步
第3步-添加MQTT Service代码
测试使用emqx的公共MQTT代理服务器,测试下面代码可以不用改,在实际的使用一定要换为自己的稳定的MQTT代理服务器
package com.nicecode.nicecode_mqtt;
import android.annotation.SuppressLint;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;
import org.eclipse.paho.mqttv5.client.IMqttToken;
import org.eclipse.paho.mqttv5.client.MqttActionListener;
import org.eclipse.paho.mqttv5.client.MqttAsyncClient;
import org.eclipse.paho.mqttv5.client.MqttCallback;
import org.eclipse.paho.mqttv5.client.MqttConnectionOptions;
import org.eclipse.paho.mqttv5.client.MqttDisconnectResponse;
import org.eclipse.paho.mqttv5.client.persist.MemoryPersistence;
import org.eclipse.paho.mqttv5.common.MqttException;
import org.eclipse.paho.mqttv5.common.MqttMessage;
import org.eclipse.paho.mqttv5.common.packet.MqttProperties;
public class MyMqttService extends Service {
public static final String TAG = "nice-code";
public String HOST = "tcp://broker.emqx.io:1883";//服务器地址(协议+地址+端口号)
public String USERNAME = "";//用户名
public String PASSWORD = "";//密码
public static String PUBLISH_TOPIC = "publish";//发布主题
public static Stri