当前位置:   article > 正文

Android MQTT连接阿里云使用Json解析数据_android studio连接阿里云

android studio连接阿里云

导入MQTT的JAR包

这里有两种方法:

1、在项目中添加依赖然后使用Studio 去下载库

2、直接下载JAR包,然后作为库进行导入

这里先介绍第一种方法:
切换到Android 目录:
在这里插入图片描述按照如下图,添加依赖即可:
在这里插入图片描述

  implementation ("org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.0")

  • 1
  • 2

在这里插入图片描述
第二种方法:
打开Android Studio 然后切换到Android 目录找到Lib文件夹,将MQTT的JAR包复制进去即可。
在这里插入图片描述
然后点击project目录然后将MQTT JAR包导进去
在这里插入图片描述
添加完成之后作为库导入工程中
在这里插入图片描述

环境验证:

在MainActivity 任取一个地方输入MQTT 看是否有提示弹窗。
在这里插入图片描述
到这里以及成功一半了。接下来就是设置一些权限问题

给程序进行联网权限

切换到按的Android 目录
在这里插入图片描述
找到如下的目录:
在这里插入图片描述
添加如代码:

 <uses-permission android:name="android.permission.INTERNET" />
    <!--允许程序获取网络状态-->
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  • 1
  • 2
  • 3

XML布局文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <LinearLayout
        android:layout_width="match_parent"
        android:background="#51CCDC"
        android:orientation="vertical"
        android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="match_parent"
            android:background="#673AB7"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="match_parent"
                android:text="桂航果蔬种植基地"
                android:textSize="25sp"
                android:textColor="#060A0C"
                android:layout_height="match_parent">
            </TextView>
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:layout_gravity="center"
            android:layout_marginTop="20dp">
            <androidx.cardview.widget.CardView
                android:layout_width="wrap_content"
                android:layout_height="200dp"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                app:cardCornerRadius="20dp">
                <ImageView
                    android:id="@+id/m_img2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@drawable/bg3"
                    />
            </androidx.cardview.widget.CardView>
        </LinearLayout>

        <LinearLayout

            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:background="#51CCDC"
            android:orientation="vertical">
            <LinearLayout
                android:layout_marginBottom="3dp"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_width="match_parent"
                android:background="@drawable/shape_corner"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_marginTop="5dp"
                android:padding="30dp">
                <!--左文字-->
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="学号:2020070230226"
                    android:textColor="@color/black"
                    android:textSize="16sp">
                </TextView>
                <!--左文字-->
                <TextView
                    android:id="@+id/m_mqtt"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text= "姓名:xiao!"
                    android:textColor="@color/black"
                    android:textSize="16sp">
                </TextView>
            </LinearLayout>
        </LinearLayout>
        <!-- vertical 竖直排列 -->
        <!-- horizontal 竖直排列 -->
        <!-- 数据解析界面 -->
        <LinearLayout
            android:layout_marginTop="10dp"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#FFFF">
            <!-- 包裹其他界面-->
            <LinearLayout
                android:layout_margin="5px"
                android:padding="3dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:orientation="vertical">
                <LinearLayout
                    android:layout_width="match_parent"
                    android:gravity="center"
                    android:layout_weight="1"
                    android:orientation="horizontal"
                    android:layout_height="match_parent">
                    <!--气温-->
                    <LinearLayout
                        android:layout_width="160dp"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:background="@drawable/shape_corner"
                        android:layout_height="105dp">
                        <ImageView
                            android:id="@+id/test"
                            android:layout_width="80dp"
                            android:layout_height="80dp"
                            android:layout_marginTop="10dp"
                            android:src="@drawable/air_temp"
                            android:layout_marginRight="15dp">
                        </ImageView>
                        <LinearLayout
                            android:layout_width="wrap_content"
                            android:orientation="vertical"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="5dp"
                                android:text="温度"
                                android:textSize="25sp">
                            </TextView>
                            <!-- 数值 -->
                            <LinearLayout
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content">
                                <TextView
                                    android:id="@+id/air_temp"
                                    android:layout_width="wrap_content"
                                    android:text=" 0 "
                                    android:textSize="25sp"
                                    android:layout_height="wrap_content">
                                </TextView>
                            </LinearLayout>
                        </LinearLayout>
                    </LinearLayout>
                    <!--The End -->
                    <!-- 湿度-->
                    <LinearLayout
                        android:layout_marginLeft="25dp"
                        android:layout_width="160dp"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:background="@drawable/shape_corner"
                        android:layout_height="105dp">
                        <ImageView
                            android:layout_width="80dp"
                            android:layout_height="80dp"
                            android:layout_marginTop="10dp"
                            android:src="@drawable/air_humi"
                            android:layout_marginRight="15dp">
                        </ImageView>
                        <LinearLayout
                            android:layout_width="wrap_content"
                            android:orientation="vertical"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="5dp"
                                android:text="湿度"
                                android:textSize="20sp">
                            </TextView>
                            <!-- 数值 -->
                            <LinearLayout
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content">
                                <TextView
                                    android:id="@+id/air_humi"
                                    android:layout_width="wrap_content"
                                    android:text=" 0 "
                                    android:textSize="25sp"
                                    android:layout_height="wrap_content">
                                </TextView>
                            </LinearLayout>
                        </LinearLayout>
                    </LinearLayout>
                </LinearLayout>
                <!--The End -->

            </LinearLayout>
            <!-- 2 -->
            <LinearLayout
                android:layout_width="match_parent"
                android:background="#FFFF"
                android:layout_margin="5px"
                android:padding="3dp"
                android:layout_height="wrap_content">
                <!-- Layout1-->
                <LinearLayout
                    android:layout_width="match_parent"
                    android:gravity="center"
                    android:layout_height="match_parent">
                    <!--气温-->
                    <!--Left1 -->
                    <LinearLayout
                        android:layout_width="160dp"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:background="@drawable/shape_corner"
                        android:layout_height="105dp">
                        <ImageView
                            android:layout_width="80dp"
                            android:layout_height="80dp"
                            android:layout_marginTop="10dp"
                            android:src="@drawable/soil_humi"
                            android:layout_marginRight="15dp">
                        </ImageView>
                        <LinearLayout
                            android:layout_width="wrap_content"
                            android:orientation="vertical"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="5dp"
                                android:text="土壤湿度"
                                android:textSize="20sp">
                            </TextView>
                            <!-- 数值 -->
                            <LinearLayout
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content">
                                <TextView
                                    android:id="@+id/sloi_humi"
                                    android:layout_width="wrap_content"
                                    android:text=" 0 "
                                    android:textSize="25sp"
                                    android:layout_height="wrap_content">
                                </TextView>
                            </LinearLayout>

                        </LinearLayout>
                    </LinearLayout>
                    <!--The End -->

                    <!-- 湿度-->
                    <LinearLayout
                        android:layout_width="160dp"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:layout_marginLeft="25dp"
                        android:background="@drawable/shape_corner"
                        android:layout_height="105dp">
                        <ImageView
                            android:layout_width="80dp"
                            android:layout_height="80dp"
                            android:layout_marginTop="10dp"
                            android:src="@drawable/n2"
                            android:layout_marginRight="15dp">
                        </ImageView>
                        <LinearLayout
                            android:layout_width="wrap_content"
                            android:orientation="vertical"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="5dp"
                                android:text="土壤含氮"
                                android:textSize="20sp">
                            </TextView>
                            <!-- 数值 -->
                            <LinearLayout
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content">
                                <TextView
                                    android:id="@+id/soli_n"
                                    android:layout_width="wrap_content"
                                    android:text=" 0 "
                                    android:textSize="25sp"
                                    android:layout_height="wrap_content">
                                </TextView>
                            </LinearLayout>
                        </LinearLayout>
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
            <!-- The End -->
            <!-- 3 -->
            <LinearLayout
                android:layout_margin="5px"
                android:padding="3dp"
                android:layout_width="match_parent"
                android:orientation="horizontal"
                android:gravity="center"
                android:layout_height="wrap_content">
                <LinearLayout
                    android:layout_width="160dp"
                    android:background="@drawable/shape_corner"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:layout_height="105dp">
                    <ImageView
                        android:layout_weight="1"
                        android:layout_width="80dp"
                        android:layout_height="80dp"
                        android:layout_marginTop="10dp"
                        android:src="@drawable/p2"
                        android:layout_marginRight="15dp">
                    </ImageView>
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:orientation="vertical"
                        android:layout_height="wrap_content">
                        <TextView
                            android:layout_marginTop="5dp"
                            android:layout_marginRight="5dp"
                            android:layout_width="wrap_content"
                            android:text="土壤含磷"
                            android:textSize="20sp"
                            android:layout_height="wrap_content">
                        </TextView>
                        <TextView
                            android:id="@+id/soil_p"
                            android:layout_marginTop="5dp"
                            android:layout_width="wrap_content"
                            android:text=" 0 "
                            android:textSize="25sp"
                            android:layout_height="wrap_content">
                        </TextView>
                    </LinearLayout>
                </LinearLayout>
                <!--L1-->
                <LinearLayout
                    android:layout_marginLeft="25dp"
                    android:gravity="center"
                    android:layout_weight="1"
                    android:layout_width="160dp"
                    android:orientation="horizontal"
                    android:background="@drawable/shape_corner"
                    android:layout_height="105dp">
                    <ImageView
                        android:layout_weight="1"
                        android:layout_width="80dp"
                        android:layout_height="80dp"
                        android:layout_marginTop="10dp"
                        android:src="@drawable/k2"
                        android:layout_marginRight="15dp">
                    </ImageView>
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:orientation="vertical"
                        android:layout_height="wrap_content">
                        <TextView
                            android:layout_marginRight="5dp"
                            android:layout_width="wrap_content"
                            android:text="土壤含钾"
                            android:textSize="20sp"
                            android:layout_height="wrap_content">
                        </TextView>
                        <TextView
                            android:id="@+id/soil_k"
                            android:layout_width="wrap_content"
                            android:text=" 0 "
                            android:textSize="25sp"
                            android:layout_height="wrap_content">
                        </TextView>
                    </LinearLayout>
                </LinearLayout>
                <!--Layout2-->
            </LinearLayout>
            <!-- The End -->
        </LinearLayout>
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373

效果如下:

在这里插入图片描述

MainActitive.java 主要代码如下:

package com.example.ks_wfs;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.net.wifi.aware.DiscoverySession;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.concurrent.ScheduledExecutorService;
public class MainActivity extends AppCompatActivity {
    private Handler handler;
    private String serverUri = "自己的IP地址";
/*    private String serverUri = "tcp://iot.qaeb.cn:1883";*/
    /*
          这里可以填上各种云平台的物联网云平的域名+1883端口号,什么阿里云腾讯云百度云天工物接入都可以,
          这里我填的是我在我的阿里云服务器上搭建的EMQ平台的地址,
          注意:前缀“tcp://”不可少,之前我没写,怎么都连不上,折腾了好久
    */
    private String userName = " ";
    private String passWord = " ";
    private String clientId = "app"+System.currentTimeMillis(); //clientId很重要,不能重复,否则就会连不上,所以我定义成 app+当前时间
    private String mqtt_sub_topic = "/iotsoil/post";          //需要订阅的主题
    private String mqtt_pub_topic = "xiao";                  //需要发布的主题
    private MqttClient mqtt_client;                         //创建一个mqtt_client对象
    MqttConnectOptions options;
    private  TextView air_temp;
    private  TextView air_humi;
    private  TextView sloi_humi;
    private  TextView soli_n;
    private  TextView soil_p;
    private  TextView soil_k;
    private ImageView test;
    private ScheduledExecutorService scheduler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /*
         * xiaobai
         * 2023.10.10
         * Version V1.0
         */
        /*绑定UI文件*/
        UI_Init();/*类似单片机的初始化*/
        mqtt_init_Connect();/*初始化连接函数*/
        /*回调函数,数据会在回调函数里面*/
        mqtt_client.setCallback(new MqttCallback() {
            @Override
            public void connectionLost(Throwable throwable) {
            }
            @Override
            public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
                /*数据到这了*/
                final String msg = new String(mqttMessage.getPayload());
                Log.d("MQTTRCV", msg);//日志信息,可以查看
                System.out.println(msg);/*打印得到的数据*/
                /*更新UI线程*/
 /*               runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                            *//*开始解析数据*//*
                           *//*数据解析部分这里使用的是Json解析*//*
                           *//*为了避免闪退,使用try来处理异常情况*//*
                        try {
                            JSONObject jsonObject = new JSONObject(String.valueOf(msg));
                            String method = jsonObject.getString("method");
                            JSONObject params = jsonObject.getJSONObject("params");
                            int soilHumidity = params.getInt("soilHumidity");
                            int currentTemperature = params.getInt("CurrentTemperature");
                            int currentHumidity = params.getInt("CurrentHumidity");
                            int n = params.getInt("N");
                            int p = params.getInt("P");
                            int k = params.getInt("K");
                                    *//*更新数据到UI*//*
                            air_temp.setText(String.valueOf(currentTemperature));
                            air_humi.setText(String.valueOf(currentHumidity));
                            sloi_humi.setText(String.valueOf(soilHumidity));
                            soli_n.setText(String.valueOf(n));
                            soil_p.setText(String.valueOf(p));
                            soil_k.setText(String.valueOf(k));
                                    *//*打印日志信息*//*
                            Log.d("TAG", "method: " + method);
                            Log.d("TAG", "soilHumidity: " + soilHumidity);
                            Log.d("TAG", "currentTemperature: " + currentTemperature);
                            Log.d("TAG", "currentHumidity: " + currentHumidity);
                            Log.d("TAG", "N: " + n);
                            Log.d("TAG", "P: " + p);
                            Log.d("TAG", "K: " + k);

                        }catch (JSONException e)
                        {
                            e.printStackTrace();
                            Toast.makeText(MainActivity.this ,"数据解析异常!",Toast.LENGTH_LONG).show();
                        }
                    }
                });*/
                /*下面是带弹窗显示的代码数据已经解析完成,解开注释即可*/

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                        builder.setTitle("MQTT消息");
                        builder.setMessage(msg);
                        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                // 点击确定按钮后的操作
                             /*   开始解析数据*/
                            /*    数据解析部分这里使用的是Json解析
                                为了避免闪退,使用try来处理异常情况*/
                                try {
                                    JSONObject jsonObject = new JSONObject(String.valueOf(msg));
                                    String method = jsonObject.getString("method");
                                    JSONObject params = jsonObject.getJSONObject("params");
                                    int soilHumidity = params.getInt("soilHumidity");
                                    int currentTemperature = params.getInt("CurrentTemperature");
                                    int currentHumidity = params.getInt("CurrentHumidity");
                                    int n = params.getInt("N");
                                    int p = params.getInt("P");
                                    int k = params.getInt("K");
                               /*     更新UI*/
                                    air_temp.setText(String.valueOf(currentTemperature));
                                    air_humi.setText(String.valueOf(currentHumidity));
                                    sloi_humi.setText(String.valueOf(soilHumidity));
                                    soli_n.setText(String.valueOf(n));
                                    soil_p.setText(String.valueOf(p));
                                    soil_k.setText(String.valueOf(k));
                               /*     打印输出的信息*/
                                    Log.d("TAG", "method: " + method);
                                    Log.d("TAG", "soilHumidity: " + soilHumidity);
                                    Log.d("TAG", "currentTemperature: " + currentTemperature);
                                    Log.d("TAG", "currentHumidity: " + currentHumidity);
                                    Log.d("TAG", "N: " + n);
                                    Log.d("TAG", "P: " + p);
                                    Log.d("TAG", "K: " + k);

                                }catch (JSONException e)
                                {
                                    e.printStackTrace();
                                    Toast.makeText(MainActivity.this ,"数据解析异常!",Toast.LENGTH_LONG).show();
                                }
                            }
                        });
                        builder.show();
                    }
                });
            }
            @Override
            public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
            }
        });
        /*点击事件*/
        test.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                PublishMessage(mqtt_pub_topic,"{\"params\":{\"我是小白,你好呀\":999 } }");
            }
        });

    }
    public void mqtt_init_Connect()
    {
        try {
            //实例化mqtt_client,填入我们定义的serverUri和clientId,然后MemoryPersistence设置clientid的保存形式,默认为以内存保存
            mqtt_client = new MqttClient(serverUri,clientId,new MemoryPersistence());
            //创建并实例化一个MQTT的连接参数对象
            options = new MqttConnectOptions();
            //然后设置对应的参数
            options.setUserName(userName);                  //设置连接的用户名
            options.setPassword(passWord.toCharArray());    //设置连接的密码
            options.setConnectionTimeout(30);               // 设置超时时间,单位为秒
            options.setKeepAliveInterval(50);               //设置心跳,30s
            options.setAutomaticReconnect(true);            //是否重连
            //设置是否清空session,设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接
            options.setCleanSession(false);
            /*初始化成功之后就开始连接*/
            connect();
            Toast.makeText(MainActivity.this,"连接成功",Toast.LENGTH_LONG).show();
        }catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(MainActivity.this,"失败",Toast.LENGTH_LONG).show();
        }
    }
    public void connect(){
        //连接mqtt服务器
        try {
            mqtt_client.connect(options);
            mqtt_client.subscribe(mqtt_sub_topic);
            Toast.makeText(this ,"开始建立连接.....!",Toast.LENGTH_LONG).show();
        }catch (Exception e) {
            e.printStackTrace();
            Log.d("MQTTCon","mqtt连接失败");
            Toast.makeText(this ,"mqtt连接失败!",Toast.LENGTH_LONG).show();
        }
    }
    /*绑定各个UI控件*/
    public void UI_Init()
    {
        air_temp  =  findViewById(R.id.air_temp); //空气温度
        air_humi  =  findViewById(R.id.air_humi);//空气湿度
        sloi_humi =  findViewById(R.id.sloi_humi);//土壤湿度
        soli_n    =  findViewById(R.id.soli_n);//土壤含N量
        soil_p    =  findViewById(R.id.soil_p);//土壤含P量
        soil_k    =  findViewById(R.id.soil_k);//土壤含K量
        test      =  findViewById(R.id.test);//测试按钮
    }
    /*发布函数!*/
    private void PublishMessage(String topic,String Message2)
    {
        if(mqtt_client ==null || !mqtt_client.isConnected())
        {
            return;
        }
        MqttMessage message = new MqttMessage();
        message.setPayload(Message2.getBytes());
        try{
            mqtt_client.publish(topic,message);

        }catch (MqttException e)
        {
            e.printStackTrace();
        }
    }

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247

End

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/386487
推荐阅读
相关标签
  

闽ICP备14008679号