赞
踩
在《每谈及物联网都难以离开的MQTT协议!》中,我们使用了模拟的方式让MQTT接入阿里云云服务器。但是我们实际中使用时却不能模拟,每一步都得自己调,毫无疑问会非常的麻烦。那么我们必须把这些指令和操作写在程序中,让其自动、智能地运行。
以下是我们将MQTT协议和连接阿里云平台的操作通过Android studio写入app中,并简单设计UI。实现手机app远程控制单片机LED灯亮灭的功能。
app源码:https://github.com/Liangyz2019/IoT-LED-APP-
首先,我们得引入mqtt.jar包
选取org.eclipse.paho.client.mqttv3/1.2.2/org.eclipse.paho.client.mqttv3-1.2.2.jar下载
jar包拷贝到新工程的app/libs目录并导入
AndroidManifest添加网络权限
</application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
MainActivity添加包
package com.example.test; import androidx.appcompat.app.AppCompatActivity; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.widget.TextView; import com.example.test.AliyunIoTSignUtil; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; import java.io.IOException; import java.text.DecimalFormat; import java.util.HashMap; import java.util.Map; import java.util.Random;
在public class MainActivity extends AppCompatActivity {}中
初始定义一些基本信息
private static final String TAG =MainActivity.class.getSimpleName(); private TextView msgTextView; private String productKey="a16OKk6dTya"; private String deviceName="KAMI"; private String deviceSecret="8790bd0545dd874d77fcac85729fc4bf"; private final String payloadJson1="{\"ParkingState\":1}"; private final String payloadJson2="{\"ParkingState\":0}"; private MqttClient mqttClient=null; final int POST_DEVICE_PROPERTIES_SUCCESS = 1002; final int POST_DEVICE_PROPERTIES_ERROR = 1003; private String responseBody = ""; private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case POST_DEVICE_PROPERTIES_SUCCESS: showToast("发送数据成功"); break; case POST_DEVICE_PROPERTIES_ERROR: showToast("post数据失败"); break; } } };
开始APP生命周期
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。