MQTT Android 开发(二)编写Android客户端

本文介绍了如何在Android上搭建MQTT服务器并实现客户端连接。通过添加Eclipse Paho库,设置权限和服务,实现了连接、订阅、发布和断开连接的功能。代码示例中展示了使用MqttAndroidClient进行操作,并通过TextView展示连接状态和消息交互。

mqtt服务器搭建请看MQTT Android 开发(一)MQTT 介绍及服务器搭建
先上效果图
在这里插入图片描述

上图在测试时,我们需要进入webSocket 页面,直接点击连接即可,不用修改参数。演示的功能是向客户端订阅的主题发送消息,以及订阅客户端发送消息的主题,接收客户端的消息。

开发过程

1.添加依赖

    implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
    implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.4'

此时要注意,如果你使用的开发包是Android X ,有可能会出现这个错误
在这里插入图片描述

还需要添加下面这个依赖,解决上述问题,为什么会出现这个问题呢?(~ ̄(OO) ̄)ブ我也忘了。反正出现上面的问题加上就OK了,没问题更好。

    implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'

我使用了viewBinding,还需要在build.gradle(app)文件下的android 节点下添加下面的代码开启它

  viewBinding {
   
   
        enabled = true
    }

2.在清单文件中添加必要的权限(过一段时间再看这里面有些权限不知道是不是非必须的了,大家自己测试吧)

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

3.在清单文件里开启服务

  <service android:name="org.eclipse.paho.android.service.MqttService" />

4.具体代码如下

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
   
   
    private static final String TAG = "MainActivity";
    //     MQTT 客户端
    private MqttAndroidClient client;
    //   消息代理服务器地址  因为我是本地搭建的 所以只能用模拟器进行测试 10.0.2.2 是Android 规定的访问本地电脑的地址 1883 是MQTT非加密协议端口
    private String serverURL = "tcp://10.0.2.2:1883";
    //     客户端 ID,用以识别客户端
    private String clientId = "HelloWorld";
    //     使用ViewBinding 代替 findViewByid 可忽略
    private ActivityMainBinding mBinding;
    //     连接参数设置
    private MqttConnectOptions mConnectOptions;
    //     要订阅的主题
    private String mTopic = "forTest";
    //     要发送消息的主题
    private String mTopic_send = "forSend";

    /*
     * TextView tvLog 是为了展示效果 代替了log
     * */

    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鑫宇_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值