Android Studio实现MQTT协议的连接

1添加依赖

在项目中找到下图文件

打开文件

如下

plugins {alias(libs.plugins.android.application)
}android {namespace = "com.example.mqtt_04"compileSdk = 34defaultConfig {applicationId = "com.example.mqtt_04"minSdk = 27targetSdk = 34versionCode = 1versionName = "1.0"testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {isMinifyEnabled = falseproguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")}}compileOptions {sourceCompatibility = JavaVersion.VERSION_1_8targetCompatibility = 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() {@Overridepublic void connectionLost(Throwable cause) {//连接断开是}@Overridepublic void messageArrived(String topic, MqttMessage message) throws Exception {//接收到信息a1[0] =new String(message.getPayload());}@Overridepublic 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/15387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树的层序遍历,平衡二叉树,以及反转二叉树

一、树的层序遍历 层序遍历的实现&#xff1a; 1.依赖于队列的数据结构 2.核心怎么实现&#xff1a; 1&#xff09;创建一个队列的容器对象。 2&#xff09;判断根节点是否为空&#xff0c;不为空则添加根节点到队列中。 3&#xff09;遍历是一个循环性的工作&#xff0c;写…

小红书无限加群脚本无需ROOT【使用简单无教程】

小红书无限加群脚本无需ROOT&#xff0c;包含了对应的小红书版本【使用简单无教程】 链接&#xff1a;https://pan.baidu.com/s/1HkLhahmHDFMKvqCC3Q3haA?pwd6hzf 提取码&#xff1a;6hzf

【Vue】computed 和 methods 的区别

概述 在使用时&#xff0c;computed 当做属性使用&#xff0c;而 methods 则当做方法调用computed 可以具有 getter 和 setter&#xff0c;因此可以赋值&#xff0c;而 methods 不行computed 无法接收多个参数&#xff0c;而 methods 可以computed 具有缓存&#xff0c;而 met…

Stable Diffusion教程:从入门到精通

Stable Diffusion是一种基于深度学习的图像生成技术&#xff0c;能够生成高质量的图像&#xff0c;广泛应用于艺术创作、广告设计和游戏开发等领域。本教程将详细介绍Stable Diffusion的基础知识、安装和配置方法&#xff0c;以及如何使用它进行图像生成。 1. 什么是Stable Di…

Python函数、类和方法

大家好&#xff0c;当涉及到编写可维护、可扩展且易于测试的代码时&#xff0c;Python提供了一些强大的工具和概念&#xff0c;其中包括函数、类和方法。这些是Python编程中的核心要素&#xff0c;可以帮助我们构建高效的测试框架和可靠的测试用例。 本文将探讨Python中的函数、…

大语言模型的工程技巧(三)——分布式计算

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 本文将讨论如何利用多台机器进行神经网络的分布式训练。利用多台机器来加速大语言模型的训练&#xff0c;是其获得成功的重要原…

BUUCTF靶场[Web] [极客大挑战 2019]Havefun1、[HCTF 2018]WarmUp1、[ACTF2020 新生赛]Include

[web][极客大挑战 2019]Havefun1 考点&#xff1a;前端、GET传参 点开网址&#xff0c;发现是这个界面 点击界面没有回显&#xff0c;老规矩查看源代码&#xff0c;看到以下代码 代码主要意思为&#xff1a; 用get传参&#xff0c;将所传的参数给cat&#xff0c;如果catdog…

揭秘Spring Bean的生命脉搏:深度剖析构造方法的推断艺术

1. 引言 在Spring框架中&#xff0c;Bean的生命周期是一个至关重要的概念。从Bean的创建、初始化到销毁&#xff0c;每一个阶段都承载着框架与用户代码的交互。而在Bean的创建阶段&#xff0c;构造方法的推断显得尤为重要。本文将从源码层面深入剖析Spring是如何推断并选择构造…

程序员做副业项目,别把事情复杂化

赚钱&#xff0c;别把简单的事情复杂化 不要把简单的事情复杂化。在大多数情况下&#xff0c;你并不需要一个应用程序、一个小程序、一个公众号、一个微商城、编写深度文章、建立一个社群&#xff0c;甚至不需要所谓的个人品牌、IP或运营技巧。 你只需要一个装满5000个&#…

Linux基础(五):常用基本命令

从本节开始&#xff0c;我们正式进入Linux的学习&#xff0c;通过前面的了解&#xff0c;我们知道我们要以命令的形式使用操作系统&#xff08;使用操作系统提供的各类命令&#xff0c;以获得字符反馈的形式去使用操作系统。&#xff09;&#xff0c;因此&#xff0c;我们是很有…

python将多个音频文件与一张图片合成视频

代码中m4a可以换成mp3,图片和音频放同一目录&#xff0c;图片名image.jpg&#xff0c;多线程max_workers可以根据CPU核心数量修改。 import os import subprocess import sys import concurrent.futures import ffmpeg def get_media_duration(media_path): probe ffmp…

Linkis踩坑记录

从WeDataSphere的docker镜像中把代码和配置拷贝到普通环境运行&#xff0c;结果linkis提交任务总是报错&#xff1a; Failed to execute task TaskID_1_otJobI d_astJob_0_codeExec_0 org.apache.linkis.orchestrator.ecm.exception.ECMPluginErrorException: errCode: 12003 …

【全开源】点餐小程序系统源码(ThinkPHP+FastAdmin+UniApp)

基于ThinkPHPFastAdminUniApp开发的点餐微信小程序&#xff0c;类似肯德基&#xff0c;麦当劳&#xff0c;喜茶等小程序多店铺模式&#xff0c;支持子商户模式&#xff0c;提供全部前后台无加密源代码和数据库&#xff0c;支持私有化部署。 革新餐饮行业的智慧点餐解决方案 一…

【vue-6】监听

一、监听watch 完整示例代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Documen…

【MATLAB源码-第213期】基于matlab的16QAM调制解调系统软硬判决对比仿真,输出误码率曲线对比图。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 一、16QAM调制原理 在16QAM&#xff08;16 Quadrature Amplitude Modulation&#xff09;调制中&#xff0c;一个符号表示4个比特的数据。这种调制方式结合了幅度调制和相位调制&#xff0c;能够在相同的频谱资源下传输更多…

【Java基础】IO流(5) —— 序列流、内存流

【Java基础】IO流(1) —— 简介 【Java基础】IO流(2) —— 字符流 【Java基础】IO流(3) —— 字节流 【Java基础】IO流(4) —— 转换流、打印流 【Java基础】IO流(5) —— 序列流、内存流 【Java基础】IO流(6) —— 随机访问文件流、数据流 序列流 SequenceInputStream 序列…

EEGLAB的相关使用

目录 概念 1.安装EEGLAB 2.文件实例演示 导入数据集处理 &#xff08;1&#xff09;导入数据集 &#xff08;2&#xff09;画图 &#xff08;3&#xff09; 修改并存储数据集 &#xff08;4&#xff09; 保存数据集 &#xff08;5&#xff09; 删除数据集 &#xff0…

技术前沿 |【BLIP:统一理解和生成的自举多模态模型研究】

BLIP&#xff1a;统一理解和生成的自举多模态模型研究 摘要引言一、BLIP模型概述二、 BLIP模型在多模态任务中的应用三、总结 摘要 本文介绍了BLIP&#xff08;Bootstrapping Language-Image Pre-training&#xff09;模型&#xff0c;一个前沿的多模态模型&#xff0c;通过自…

散列(哈希)及其练习题(基础)

目录 散列 字符出现次数 力扣经典题&#xff1a;两数之和 集合运算 交 并 差 字符串的出现次数 散列 导入&#xff1a; 有N个数和M个数&#xff0c;如何判断M个数中每个数是否在N中出现&#xff1f; 思想&#xff1a;空间换时间 创建hashtable&#xff0c;以N个数本…

图_基础算法

图这种数据结构还有一些比较特殊的算法&#xff0c;比如二分图判断&#xff0c;有环图无环图的判断&#xff0c;拓扑排序&#xff0c;以及最经典的最小生成树&#xff0c;单源最短路径问题&#xff0c;更难的就是类似网络流这样的问题。 先看拓扑排序&#xff08;有环无环&…