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
* */

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

被折叠的 条评论
为什么被折叠?



