mqtt安卓客户端
1.MQTT(消息队列遥测传输协议),是一种基于 发布/订阅 (publish/subscribe)模式的"轻量级"通讯协议, 该协议构建于TCP/IP协议上 。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
MQTT协议中有三种身份:发布者(Publish)、服务器(Broker)、订阅者(Subscribe)
2.api操作:
Connect:与服务器进行MQTT连接;
Disconnect:与服务器断开MQTT连接;
Subscribe:订阅某个主题;
UnSubscribe:取消订阅某个主题;
Publish:发布消息;
3.安卓客户端示例:
添加依赖:
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.2'implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
添加权限
<uses-permission android:name="android.permission.INTERNET" />
java代码
//创建实例
//brokerUrl为实例,clientid是唯一值
MqttAndroidClient mqttAndroidClient = new MqttAndroidClient(context, brokerUrl, clientId);//设置监听订阅消息的回调mqttAndroidClient.setCallback(mqttCallback);mMqttConnectOptions = new MqttConnectOptions();//设置是否清除缓存mMqttConnectOptions.setCleanSession(true);//设置超时时间,单位:秒mMqttConnectOptions.setConnectionTimeout(60);//设置心跳包发送间隔,单位:秒mMqttConnectOptions.setKeepAliveInterval(60);//设置用户名mMqttConnectOptions.setUserName(userName);//设置密码mMqttConnectOptions.setPassword(password.toCharArray());//是否重连mMqttConnectOptions.setAutomaticReconnect(false);//同时发布的最大消息数量mMqttConnectOptions.setMaxInflight(10000);//建立连接mqttAndroidClient.connect(mMqttConnectOptions, null, iMqttActionListener);private final MqttCallback mqttCallback = new MqttCallback() {//这里处理收到的数据@Overridepublic void messageArrived(String topic, MqttMessage message) {}@Overridepublic void deliveryComplete(IMqttDeliveryToken arg0) {Log.d(TAG, "deliveryComplete: ");}@Overridepublic void connectionLost(Throwable arg0) {Log.e(TAG, "connectionLost:" + arg0.getMessage());Log.e(TAG, "onFailure: " + mqttAndroidClient.isConnected());doReconnect();}};private final IMqttActionListener iMqttActionListener = new IMqttActionListener() {@Overridepublic void onSuccess(IMqttToken arg0) {//建立订阅try {mqttAndroidClient.subscribe(topic, topicQos, null,new IMqttActionListener() {@Overridepublic void onSuccess(IMqttToken asyncActionToken) {Log.d(TAG, "Subscribed topic successfully: " + asyncActionToken.toString());}@Overridepublic void onFailure(IMqttToken asyncActionToken,Throwable exception) {Log.d(TAG, "Failed to subscribe to a topic: " + asyncActionToken.toString());}});} catch (MqttException e) {Log.d(TAG, "Subscribe to the topic: " + e);e.printStackTrace();}}@Overridepublic void onFailure(IMqttToken arg0, Throwable arg1) {arg1.printStackTrace();Log.e(TAG, "iMqttActionListener: arg0:" + arg0.toString() + " arg1:" + arg1.getMessage());Log.e(TAG, "onFailure: " + mqttAndroidClient.isConnected());doReconnect();}};MqttMessage message = new MqttMessage();message.setPayload(payload.getBytes());message.setQos(0);//publish到mqttmqttAndroidClient.publish(mTopic, message, null, new IMqttActionListener() {@Overridepublic void onSuccess(IMqttToken asyncActionToken) {Log.i(TAG, "publish succeed!");listener.onState(1);}@Overridepublic void onFailure(IMqttToken asyncActionToken, Throwable exception) {Log.i(TAG, "publish failed!");listener.onState(2);}});相关文章:
mqtt安卓客户端
1.MQTT(消息队列遥测传输协议),是一种基于 发布/订阅 (publish/subscribe)模式的"轻量级"通讯协议, 该协议构建于TCP/IP协议上 。MQTT最大优点在于,可以以极少的代码和有限的带宽&…...
pdf怎么删除其中一页?
pdf怎么删除其中一页?现在,pdf文件已经深入影响着我们的工作和学习,如果你是一个上班族,那么几乎每天都会使用到pdf格式的电脑文件。当我们阅读一个页数众多的PDF文件时,可能会发现实际上只需要其中的一小部分内容。很…...
10.Redis 渐进式遍历
Redis 渐进式遍历 渐进式遍历scan 渐进式遍历 keys 命令一次性的把整个redis中所有的key都获取到,keys *但这个操作比较危险,可能会一下子得到太多的key,阻塞 redis 服务器。 通过渐进式遍历,就可以做到,既可以获取到所有的 key&…...
字符函数和字符串函数(2)
目录 memcpy memmove memcmp memcpy void * memcpy ( void * destination, const void * source, size_t num ); 1.函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。 2.这个函数在遇到 \0 的时候并不会停下来。 3.如果source和destination有…...
目录扫描+JS文件中提取URL和子域+403状态绕过+指纹识别(dirsearch_bypass403)
dirsearch_bypass403 在安全测试时,安全测试人员信息收集中时可使用它进行目录枚举,目录进行指纹识别,枚举出来的403状态目录可尝试进行绕过,绕过403有可能获取管理员权限。不影响dirsearch原本功能使用 运行流程 dirsearch进行…...
【UE 材质】常用向量运算节点——点积、叉积、归一化
目录 一、点积 二、叉积 三、归一化 一、点积 点积,也称为内积或数量积,是一种用于计算两个向量之间关系的操作。对于两个三维向量 A(a1,a2,a3)和 B(b1,b2,b3),它们的点积可以用以下公式表示: ABa1⋅…...
音视频 ffmpeg命令提取PCM数据
提取PCM ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f s16le 48000_2_s16le ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -sample_fmt s16 out_s16.wav ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -codec:a pcm_s16le out2_s16le.wav ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f…...
【MySQL】实现可扩展性:构建高性能的系统
什么是可扩展性?可扩展性的好处扩展方式纵向扩展(Scaling Up)横向扩展(Scaling Out) 总结 💯感谢 💖 什么是可扩展性? 可扩展性是指系统能够在需要时轻松地适应更多的工作负载和资源…...
网站用户体验之深度感悟
个性化定制界面和极简版原装界面,哪一个你用起来更加顺手呢,相比之下你更喜欢哪一个? 界面选择: (提醒:仅个人感悟。~~) 方向一:表明自己的喜好 我个人觉得更喜欢个性化定制界面。…...
目标检测YOLO实战应用案例100讲-道路场景下目标检测与分割模型的压缩研究与实现
目录 前言 目标检测方法 语义分割方法 相关理论基础 2.1 YOLO目标检测算法介绍...
基于MSP430 红外避障-遥控小车(电赛必备 附项目代码)
文章目录 一、硬件清单二、模块连接三、程序设计四、项目源码 项目环境: 1. MSP430F55292. Code Composer Studio3. 蓝牙调试助手 项目简介: 小车可分为3种工作模式,每种工作模式都会打印在OLED显示屏上,通过按键转换工作模式。 模…...
大型商城系统功能逻辑架构_各大系统关系设计_OctShop
一个商城系统应该具备什么样的功能才算一个合格的网上商城呢,才能满意用户的下单支付,退款退货,售后等需求呢! 商城一般分为三种角色:买家,商家,平台,这三种角色都有各自的功能特点。…...
飞书接入ChatGPT,实现智能化问答助手功能,提供高效的解答服务
文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话,在下面操作步骤中…...
linux并发服务器 —— 多线程并发(六)
线程概述 同一个程序中的所有线程均会独立执行相同程序,且共享同一份全局内存区域; 进程是CPU分配资源的最小单位,线程是操作系统调度执行的最小单位; Linux环境下,线程的本质就是进程; ps -Lf pid&…...
Nginx 部署 配置
一.概述 什么是nginx? Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 什么是反向代理? 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求…...
数据结构:时间复杂度和空间复杂度计算
1.什么是时间复杂度和空间复杂度? 1.1算法效率 算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度, 而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间…...
云原生Kubernetes:二进制部署K8S单Master架构(一)
目录 一、理论 1.K8S单Master架构 2. etcd 集群 3.flannel网络 4.K8S单Master架构环境部署 5.部署 etcd 集群 6.部署 docker 引擎 7.flannel网络配置 二、实验 1.二进制部署K8S单Master架构 2. 环境部署 3.部署 etcd 集群 4.部署 docker 引擎 5.flannel网络配置…...
ICCV 2023 | 利用双重聚合的Transformer进行图像超分辨率
导读 本文提出一种同时利用图像空间和通道特征的 Transformer 模型,DAT(Dual Aggregation Transformer),用于图像超分辨(Super-Resolution,SR)任务。DAT 以块间和块内的双重方式,在空…...
经纬恒润预期功能安全(SOTIF)解决方案为自动驾驶安全保驾护航
近年来,“安全”被普遍认为是智能驾驶汽车被用户接受或者得到商业应用最大的问题,ISO26262功能安全旨在避免由E/E系统功能失效导致的不可接受的风险,主要是针对系统性失效/随机硬件失效导致的风险进行分析和控制,然而传感器和感知…...
java从入门到起飞(七)——面向对象
文章目录 一、什么是面向对象1.1 定义1.2 特点 二、面向对象的基础2.1 面向对象的基础是抽象2.2 抽象的作用2.3 类和对象2.4 属性和方法2.5 构造方法 三、面向对象的三大特征3.1 封装3.1.1 封装的意义3.1.2 封装的实现 3.2 继承3.2.1 继承的意义3.2.2 继承的实现 3.3 多态3.3.1…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
