android mqtt demo

MQTTService.java

复制代码
package com.example.demo01;

import android.util.Log;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.IMqttMessageListener;
import org.eclipse.paho.client.mqttv3.MqttMessage;

public class MQTTService {
    private static final String TAG = "MQTTService";
    private static final String BROKER_URL = "tcp://192.168.2.44:1883"; // Example public broker
    private static final String CLIENT_ID = "AndroidClient";
    private static final String TOPIC = "test/topic";

    private MqttClient mqttClient;
    private MqttConnectOptions connectOptions;

    public MQTTService() throws MqttException {
        // Create an MQTT client and connect to the broker
        mqttClient = new MqttClient(BROKER_URL, CLIENT_ID, null);
        connectOptions = new MqttConnectOptions();
        connectOptions.setCleanSession(true);

        // Connect to the MQTT broker
        mqttClient.connect(connectOptions);
        Log.d(TAG, "Connected to MQTT Broker");

        // Subscribe to a topic
        mqttClient.subscribe(TOPIC, new IMqttMessageListener() {
            @Override
            public void messageArrived(String topic, MqttMessage message) throws Exception {
                Log.d(TAG, "Message received: " + new String(message.getPayload()));

            }
        });

    }

    public void publishMessage(String message) throws MqttException {
        MqttMessage mqttMessage = new MqttMessage();
        mqttMessage.setPayload(message.getBytes());
        mqttClient.publish(TOPIC, mqttMessage);
        Log.d(TAG, "Message published: " + message);
    }

    public void disconnect() throws MqttException {
        mqttClient.disconnect();
        Log.d(TAG, "Disconnected from MQTT Broker");
    }
}

Activity:

复制代码
package com.example.demo01;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import org.eclipse.paho.client.mqttv3.MqttException;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private MQTTService mqttService;
    Button buttonTest;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        EdgeToEdge.enable(this);

        setContentView(R.layout.activity_main);

        try {
            mqttService = new MQTTService();
        } catch (MqttException e) {
            throw new RuntimeException(e);
        }

        buttonTest = findViewById(R.id.buttonMqttTest);
        buttonTest.setOnClickListener(this);

        Log.d("ARIC", "########");

        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });


    }

    @Override
    public void onClick(View v) {
        try {
            mqttService.publishMessage("Hello, MQTT!");
        } catch (MqttException e) {
            throw new RuntimeException(e);
        }
    }
}
相关推荐
2601_949833396 小时前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter
2603_949462108 小时前
Flutter for OpenHarmony社团管理App实战:预算管理实现
android·javascript·flutter
王泰虎10 小时前
安卓开发日记,因为JCenter 关闭导致加载不了三方库应该怎么办
android
2601_9495430114 小时前
Flutter for OpenHarmony垃圾分类指南App实战:主题配置实现
android·flutter
2601_9498333915 小时前
flutter_for_openharmony口腔护理app实战+知识实现
android·javascript·flutter
晚霞的不甘15 小时前
Flutter for OpenHarmony从基础到专业:深度解析新版番茄钟的倒计时优化
android·flutter·ui·正则表达式·前端框架·鸿蒙
鸟儿不吃草16 小时前
android的Retrofit请求https://192.168.43.73:8080/报错:Handshake failed
android·retrofit
Minilinux201816 小时前
Android音频系列(09)-AudioPolicyManager代码解析
android·音视频·apm·audiopolicy·音频策略
李子红了时16 小时前
【无标题】
android
Android系统攻城狮17 小时前
Android tinyalsa深度解析之pcm_close调用流程与实战(一百零四)
android·pcm·tinyalsa·音频进阶·音频性能实战·android hal