mqtt安卓客户端

这篇具有很好参考价值的文章主要介绍了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代码文章来源地址https://www.toymoban.com/news/detail-688368.html

//创建实例
//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() {

           //这里处理收到的数据
        @Override
        public void messageArrived(String topic, MqttMessage message) {
       
        }

        @Override
        public void deliveryComplete(IMqttDeliveryToken arg0) {
            Log.d(TAG, "deliveryComplete: ");
        }

        @Override
        public void connectionLost(Throwable arg0) {
            Log.e(TAG, "connectionLost:" + arg0.getMessage());
            Log.e(TAG, "onFailure: " + mqttAndroidClient.isConnected());
            doReconnect();
        }

    };


 private final IMqttActionListener iMqttActionListener = new IMqttActionListener() {
        @Override
        public void onSuccess(IMqttToken arg0) {
           //建立订阅
            try {
                mqttAndroidClient.subscribe(topic, topicQos, null,
                        new IMqttActionListener() {
                            @Override
                            public void onSuccess(IMqttToken asyncActionToken) {
                                Log.d(TAG, "Subscribed topic successfully: " + asyncActionToken
                                        .toString());
                            }

                            @Override
                            public 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();
            }
        }

        @Override
        public 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到mqtt
 mqttAndroidClient.publish(mTopic, message, null, new IMqttActionListener() {
                @Override
                public void onSuccess(IMqttToken asyncActionToken) {
                    Log.i(TAG, "publish succeed!");
                    listener.onState(1);
                }

                @Override
                public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
                    Log.i(TAG, "publish failed!");
                    listener.onState(2);
                }
            });


到了这里,关于mqtt安卓客户端的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Android 实现MQTT客户端,用于门禁消息推送

    添加MQTT依赖 implementation ‘org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.2’ implementation ‘org.eclipse.paho:org.eclipse.paho.android.service:1.1.1’ 在Manifest清单文件中添加服务 MqttClient的实现方式 MQTT初始化连接线程,实现与服务器的连接、订阅、发布消息 MQTT重连 MQTT断开 发送消息 MqttAndroid

    2024年02月14日
    浏览(6)
  • C#MQTT编程07--MQTT服务器和客户端(wpf版)

    C#MQTT编程07--MQTT服务器和客户端(wpf版)

    上篇完成了winform版的mqtt服务器和客户端,实现了订阅和发布,效果666,长这样  这节要做的wpf版,长这样,效果也是帅BBBB帅,wpf技术是cs程序软件的福音。  wpf的基础知识和案例项目可以看我的另一个专栏系列文章,这里直接干搞,开发环境依然是vs2022,.netframework 4.8,mq

    2024年01月17日
    浏览(9)
  • MQTT 客户端出现连接订阅等问题时如何排查?

    大家好,这是一期社区专题 FAQ。我们整理了近期社区中关注度较高的问题,在这里进行统一汇总解答。 今后本系列内容将不定期推送,敬请关注。 同时,如果大家在使用 EMQX 的过程中遇到问题,欢迎通过以下方式进行解决: 查阅 EMQX 产品文档与博客文章。 如果在现有资料

    2023年04月20日
    浏览(5)
  • MQTT协议-发布消息(服务器向客户端发送)

    MQTT协议-发布消息(服务器向客户端发送)

    发布消息报文组成:https://blog.csdn.net/weixin_46251230/article/details/129414158 在了解了发布信息的PUBLISH报文后,就可以分析出阿里云服务器向本地客户端发送的报文数据了 实验前需要在阿里云创建产品和设备,并创建简单的温度和湿度物模型:https://blog.csdn.net/weixin_46251230/article/de

    2024年02月06日
    浏览(12)
  • LuatOS-SOC接口文档(air780E)--mqtt - mqtt客户端

    常量 类型 解释 mqtt.STATE_DISCONNECT number mqtt 断开 mqtt.STATE_SCONNECT number mqtt socket连接中 mqtt.STATE_MQTT number mqtt socket已连接 mqtt连接中 mqtt.STATE_READY number mqtt mqtt已连接 订阅主题 参数 传入值类型 解释 string/table 主题 int topic为string时生效 0/1/2 默认0 返回值 返回值类型 解释 int 消息i

    2024年02月06日
    浏览(7)
  • 【Android】MQTT入门——服务器部署与客户端搭建

    【Android】MQTT入门——服务器部署与客户端搭建

    MQTT(Message Queuing Telemetry Transport) 是一种基于发布/订阅模式的轻量级消息传输协议,专门针对低带宽、和不稳定网络环境的物联网应用而设计,它可以用极少的代码为互联网设备提供实时可靠的消息服务。 MQTT 协议主要用于物联网和移动设备等资源有限的场景中,其中包括

    2024年02月04日
    浏览(12)
  • wxbit appinventor 使用MQTT客户端连接onenet时的坑

    wxbit appinventor 使用MQTT客户端连接onenet时的坑

    在最近使用wxbit中的MQTT客户端时遇见一些小问题,在开始不知道具体怎么连接上自己的onenet产品,后面通过查阅资料解决了问题 写下这篇博客是为了记录相关问题 将mqtt客户端拖入后,点击MQTT客户端,便可以查看组件属性 上图4个属性决定的你连接的是哪个服务器和哪个设备

    2024年02月05日
    浏览(18)
  • linux下MQTT服务器(EMQX)搭建及paho.mqtt.c客户端开发

    linux下MQTT服务器(EMQX)搭建及paho.mqtt.c客户端开发

    前言: MQTT 是一种基于客户端服务端架构的发布 / 订阅模式的消息传输协议。它的设计思想是轻巧、开放、 简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与 机器的通信( M2M )以及物联网环境( IoT )。        ---

    2024年02月06日
    浏览(12)
  • 【物联网】超级好用的MQTT客户端软件(MQTTfx下载和安装)

    【物联网】超级好用的MQTT客户端软件(MQTTfx下载和安装)

    MQTT.fx是一款基于Eclipse Paho,使用Java语言编写的MQTT客户端工具。支持通过Topic订阅和发布消息,用来前期和物理云平台调试非常方便。 它是一个用Java编写的MQTT客户端库,可以帮助开发人员在Eclipse环境下快速开发MQTT应用程序。Mqtt.fx提供了一系列功能,包括创建和管理连接,

    2024年02月12日
    浏览(8)
  • 一文搞懂MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布&MQTT 客户端重连

    一文搞懂MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布&MQTT 客户端重连

    简介: 之前介绍了RabbitMQ以及如何在SpringBoot项目中整合使用RabbitMQ,看过的朋友都说写的比较详细,希望再总结一下目前比较流行的MQTT。所以接下来,就来介绍什么MQTT?它在IoT中有着怎样的作用?如何在项目中使用MQTT? 之前介绍了RabbitMQ以及如何在SpringBoot项目中整合使用

    2024年02月05日
    浏览(6)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包