管灌系统巡查员智能手机App
app/src/main/java/com/dayu/pipirrapp/net/MqttManager.java
@@ -1,6 +1,8 @@
package com.dayu.pipirrapp.net;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.util.Log;
import androidx.lifecycle.LifecycleOwner;
@@ -22,6 +24,7 @@
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import java.util.HashMap;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -36,7 +39,7 @@
    //    private static final String MQTT_BROKER_URL = "tcp://115.236.153.170:30764"; // 修改为你的 broker 地址
    private static final String MQTT_BROKER_URL = "tcp://192.168.10.52:1883";
    private static final String CLIENT_ID = "mqttx_a7a9fe73";
    private String CLIENT_ID = "mqttx_a7a9fe73";
    private static final String TOPIC = "workOrder"; // 订阅的主题
    private MqttClient mqttClient;
@@ -44,10 +47,18 @@
    boolean isHasNet = true;
    //是否连接成功过一次,没有的话联网后重连
    boolean isConnet = false;
    private ExecutorService executorService = Executors.newSingleThreadExecutor();
    private final ExecutorService executorService = Executors.newSingleThreadExecutor();
    public MqttManager(Context context, LifecycleOwner lifecycleOwner) {
        try {
            PackageManager manager = context.getPackageManager();
            PackageInfo info = null;
            try {
                info = manager.getPackageInfo(context.getPackageName(), 0);
            } catch (PackageManager.NameNotFoundException e) {
                throw new RuntimeException(e);
            }
            CLIENT_ID = context.getPackageName() + UUID.randomUUID().toString().replace("-", "") + "_" + info;
            mqttClient = new MqttClient(MQTT_BROKER_URL, CLIENT_ID, new MemoryPersistence());
            connectOptions = new MqttConnectOptions();
            connectOptions.setUserName("mqtt_yjy");
@@ -142,10 +153,10 @@
                // 在子线程收到消息时的处理逻辑
                Log.d("MqttManager", "subscribe收到消息:" + new String(message.getPayload()));
                //传递MQ收到的信息
                HashMap<String, Object> data= MyJsonParser.getMapFromJson(new String(message.getPayload()));
                HashMap<String, Object> data = MyJsonParser.getMapFromJson(new String(message.getPayload()));
                //判断是否是当前用户
                if (data.get("inspectorId").equals(MyApplication.myApplication.userId)){
                    LiveEventBus.get(CommonKeyName.MQTTData).post(message.getPayload());
                if (data.get("inspectorId").equals(MyApplication.myApplication.userId)) {
                    LiveEventBus.get(CommonKeyName.MQTTData).post(data.get("workOrderId"));
                }
            });