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…...
别再死记硬背了!用Python+DEAP库5分钟搞定NSGA-II多目标优化(附完整代码)
用PythonDEAP库5分钟实现NSGA-II多目标优化实战 当我们需要同时优化多个相互冲突的目标时,比如在机器学习中既要模型精度高又要推理速度快,传统单目标优化方法就捉襟见肘了。NSGA-II(非支配排序遗传算法II)作为多目标优化领域的标…...
地平线6正式上线!UU远程云电脑工作日也能全高画质飙车
《极限竞速:地平线6》5月18日正式全球发售!该作将舞台设在超燃的日本东京,从东京涩谷的霓虹璀璨,到秋名山的晨雾缭绕与漂移快感;从北海道的茫茫雪原越野,到富士山下的樱花赛道浪漫驰骋,每一处场景都细节拉满…...
别再让容器‘断网’了!Docker DNS配置保姆级教程(从全局到单容器,含8.8.8.8等常用DNS)
Docker容器网络疑难排查:全方位DNS配置指南与实战技巧 当你正在赶一个紧急项目,突然发现Docker容器无法连接外部API服务,控制台不断抛出"Name or service not known"错误——这种场景对开发者来说再熟悉不过了。容器网络问题&#…...
告别HAL库延时:在STM32F103上基于CubeMX和LL库,打造更高效的SysTick延时方案
STM32F103高效延时方案:从HAL库到LL库的SysTick实战优化 在嵌入式开发中,精确的延时控制往往是项目成败的关键因素之一。许多STM32开发者最初接触的是HAL库提供的HAL_Delay()函数,它简单易用,但随着项目复杂度提升,特别…...
电脑截图工具深度测评:PixPin、Snipaste、兔灵截图(Utools插件)
日常办公、写教程、做笔记,截图是高频刚需。Windows自带截图简陋,截图功能有限,精准标注、长截图、OCR识别等需求,需要专业工具来满足。 本文实测3款「免费无广告、口碑拉满」的截图工具:PixPin、Snipaste、兔灵截图&a…...
STM32 FSMC外部存储器接口配置与调试实战指南
1. 项目概述:为什么FSMC是STM32连接外部存储器的“瑞士军刀”如果你玩过STM32,尤其是那些带屏幕、需要大容量数据缓存或者要跑复杂UI的型号,比如F1、F4、H7系列,那你大概率绕不开一个外设:FSMC,全称Flexibl…...
考前终极口诀合集,30秒过一遍
考前最后冲刺,别再翻教材了!把所有核心口诀集中在一起,科科过软考培训对系统集成项目管理工程师考前冲刺从头到尾过一遍,30秒搞定,能掌握不少必会知识点。一、挣值与关键路径——计算题的铁口诀挣值分析口诀࿱…...
Zynq矿板DDR3内存配置与测试全攻略:从硬件探秘到软件调试
1. 项目概述与核心价值最近在折腾一块基于Xilinx Zynq-7000系列的“矿板”,说白了就是一些特定应用场景(比如早期的加密货币计算)淘汰下来的硬件。这些板子往往用料扎实,核心的FPGAARM架构完整,但价格却只有正规开发板…...
论文查重,重复率高该怎么办?
论文查重高,先别急着想“有没有捷径”。先判断你高到什么程度。10%-20%超线一点:最好处理 这种通常不是“论文废了”,而是局部重复。最常见:文献综述太像参考文献原话理论定义直接搬对策建议全是“加强XX、完善XX、建立XX”方法部…...
实习前自我培训-Day3学习
Day3学习–MySQL 企业开发使用方式 使用命令mysql -hip地址 -P端口号 -uroot -p来连接远程的数据库 数据模型关系型数据库:建立在关系模型基础上,由多张相互连接的二维表组成的数据库特点:使用表存储数据,格式同意,便于…...
