Android Studio实现MQTT协议的连接

1添加依赖

在项目中找到下图文件

打开文件

如下

plugins {
    alias(libs.plugins.android.application)
}

android {
    namespace = "com.example.mqtt_04"
    compileSdk = 34

    defaultConfig {
        applicationId = "com.example.mqtt_04"
        minSdk = 27
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation(libs.appcompat)
    implementation(libs.material)
    implementation(libs.activity)
    implementation(libs.constraintlayout)
    testImplementation(libs.junit)
    androidTestImplementation(libs.ext.junit)
    androidTestImplementation(libs.espresso.core)
}

在dependencies节点中添加如下语句

implementation("org.eclipse.paho","org.eclipse.paho.client.mqttv3","1.2.5")

此文件中上方会显示是否同步

点击同步

依赖会自动下载

2添加网路权限

找到如下文件

在文件中在

<application

节点的上方添加权限选中的是要添加的权限

 <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

权限添加完成

3创建MQTT类

在类中添加 连接 订阅  发布 和 关闭 方法

package com.example.mqtt_04;

import android.os.Message;

import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
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.MqttMessage;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;

import java.nio.charset.StandardCharsets;

public class MQTT_xie_yi {
    private static MqttClient client;
    private static MqttConnectOptions options;
    //建立连接
    public static void Mqtt_init() throws MqttException {
        //创建客户端对象
        client=new MqttClient("tcp://(写入自己的IP):(写入IP的端口号)","app_MQTT_04",new MemoryPersistence());
        //创建连接
        options=new MqttConnectOptions();
        options.setCleanSession(true);
        //可以设置如用户名  密码 等等

        //将配置给客户端
        client.connect(options);
    }
    //订阅
    public static String  SubClient() throws MqttException {
        final String[] a1 = {""};
        client.setCallback(new MqttCallback() {
            @Override
            public void connectionLost(Throwable cause) {
                //连接断开是
            }

            @Override
            public void messageArrived(String topic, MqttMessage message) throws Exception {
                //接收到信息
                a1[0] =new String(message.getPayload());
            }

            @Override
            public void deliveryComplete(IMqttDeliveryToken token) {
                //接收信息完成后
            }
        });
        //开始订阅
        client.subscribe("wd");
        //返回数据
        return a1[0];
    }
    //发布
    public static void PubClient(String a2) throws MqttException {
        //创建消息对象
        MqttMessage mqttMessage=new MqttMessage(("信息为:"+a2).getBytes(StandardCharsets.UTF_8));
        //设置消息等级
        mqttMessage.setQos(0);
        //发布消息
        client.publish("wd",mqttMessage);
    }
    //关闭客户端//会将此线程关闭在没有重建一条线程去运行会退出页面
    public static void guan_bi() throws MqttException {
        //断开连接
        client.disconnect();
        //关闭客户端
        client.close();
    }
}

主函数中调用即可

要将IP改为自己的IP

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio可以通过添加MQTT库来实现MQTT服务。有很多MQTT库可供选择,如 Eclipse Paho,MQTT-AndroidMQTT-Client等。这些库提供了MQTT协议的API和方法,以实现设备之间的通信。以下是一些关键步骤: 1. 首先,导入所选的MQTT库。可以从以下任意一种方式实现: - 通过Gradle依赖添加库: implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.2' - 手动下载库并将其添加到项目中。在Android Studio中,右键单击项目,选择New->Module。选择Import .JAR/.AAR Package并选择下载的MQTT库。 2. 创建MQTTClient实例。可以使用以下代码示例创建MQTTClient实例: String broker = "tcp://192.168.0.1:1883"; String clientId = "android-client-id"; MemoryPersistence persistence = new MemoryPersistence(); MqttClient mqttClient = new MqttClient(broker,clientId,persistence); // 指定回调处理程序 mqttClient.setCallback(new MqttCallback() { @Override public void connectionLost(Throwable throwable) { // 连接丢失 } @Override public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { // 消息到达 } @Override public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { // 发送完成 } }); 3. 连接MQTT代理。连接MQTT代理时需要使用以下代码: MqttConnectOptions options = new MqttConnectOptions(); options.setUserName("username"); options.setPassword("password".toCharArray()); options.setCleanSession(true); mqttClient.connect(options); 4. 发布消息。向MQTTBroker发布消息需要指定主题和消息体。示例如下: String topic = "test/topic"; String payload = "hello, world!"; MqttMessage message = new MqttMessage(payload.getBytes()); message.setQos(0); message.setRetained(true); mqttClient.publish(topic, message); 5. 订阅主题。为了接收来自其他设备的MQTT消息,需要订阅一个或多个主题。示例如下: String topic = "test/topic"; int qos = 0; mqttClient.subscribe(topic, qos); 通过这些步骤,您可以在Android Studio实现MQTT服务和设备之间的通信。注意,在连接和发布/订阅消息时,必须考虑网络延迟和错误处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值