Android14+MQTT

上一篇博文中说到了如何升级MQTT使其支持Android12,但是在实际运行的过程中发现,在Android14手机上会出现闪退现象。

通过搜索发现MQTT已经升级,现已支持Android X和Android14,仓库地址:https://github.com/mayzs/paho.mqtt.android?tab=readme-ov-file

接下来介绍如何在现有项目的基础上升级配置使其支持Android14.

我使用的项目配置:

SDK:34,最高支持Android14
Android Gradle Plugin Version: 8.4.0
Gradle Version: 8.6
Min SDK Version: 28
JavaVersion:17

 支持Android14的MQTT的官方教程

修改原有 eclipse paho mqtt android 项目,支持AndroidX,支持 Android 14

implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5'
implementation 'io.github.mayzs:paho.mqtt.android:1.1.7'
低版本 gradle 使用 implementation 'io.github.mayzs:paho.mqtt.android:1.1.7@aar

好的,以下是Android MQTT连接MQTT服务器并获取传感器数据的示例代码: 1. 添加依赖 在项目的 build.gradle 文件中添加以下依赖: ``` dependencies { implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5' } ``` 2. 连接MQTT服务器 在需要连接MQTT服务器的Activity或者Fragment中,添加以下代码: ``` String clientId = MqttClient.generateClientId(); MqttConnectOptions options = new MqttConnectOptions(); options.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1); options.setCleanSession(true); try { IMqttClient mqttClient = new MqttClient("tcp://your.mqtt.server:1883", clientId, new MemoryPersistence()); mqttClient.connect(options); // 订阅主题 mqttClient.subscribe("temperature"); mqttClient.subscribe("humidity"); mqttClient.subscribe("sensor_status"); mqttClient.setCallback(new MqttCallback() { @Override public void connectionLost(Throwable cause) { // 处理连接断开异常 } @Override public void messageArrived(String topic, MqttMessage message) throws Exception { // 处理接收到的传感器数据 if ("temperature".equals(topic)){ String temperature = new String(message.getPayload()); // 处理温度数据 } else if ("humidity".equals(topic)) { String humidity = new String(message.getPayload()); // 处理湿度数据 } else if ("sensor_status".equals(topic)) { String status = new String(message.getPayload()); // 处理传感器状态数据 } } @Override public void deliveryComplete(IMqttDeliveryToken token) { // 消息发布成功 } }); } catch (MqttException e) { e.printStackTrace(); } ``` 代码中,首先生成客户端ID,并创建MqttConnectOptions对象配置连接选项,然后创建MqttClient对象连接至MQTT服务器,订阅三个主题:temperature、humidity、sensor_status,设置回调接收传感器数据。当服务器有新数据时,会调用回调接口的messageArrived方法进行处理。 3. 发送传感器数据 客户端向MQTT服务器发送数据,可以使用以下代码: ``` String topic = "temperature"; String payload = "24.3"; IMqttMessage message = new MqttMessage(payload.getBytes()); try { mqttClient.publish(topic, message); } catch (MqttException e) { e.printStackTrace(); } ``` 以上代码可以在需要发送传感器数据的地方进行调用,将温度数据24.3发布至"temperature"主题,实际中需要根据实际传感器数据进行修改。 希望我的回答能够解决你的问题!如果还有其他问题,欢迎继续提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值