根据 添加链接描述
和 添加链接描述
我的APP已经成功连接上MQTT服务器,至于怎么发布和接收,正在研究,研究好了,发上来。
作者写的代码是Java的,但现在都推荐Kotlin
我就把转好的Kotlin代码发出来
package com.example.mqtt_kotlin import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Toast import com.example.mqtt_kotlin.R import org.eclipse.paho.android.service.MqttAndroidClient import org.eclipse.paho.client.mqttv3.IMqttActionListener import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken import org.eclipse.paho.client.mqttv3.IMqttToken import org.eclipse.paho.client.mqttv3.MqttCallbackExtended import org.eclipse.paho.client.mqttv3.MqttConnectOptions import org.eclipse.paho.client.mqttv3.MqttMessage class MainActivity : AppCompatActivity() { private val serverUri = "tcp://mqtt.hui-ke.com:1883" private val userName = "admin" private val passWord = "admin" private val clientId = "mqtt_kotlin手机客户端" private val mqtt_sub_topic = "Android_Get" //需要订阅的主题 private val mqtt_pub_topic = "Android_Set" //需要发布的主题 private var mqtt_client: MqttAndroidClient? = null //创建一个mqtt_client对象 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mqtt_init_Connect() } fun mqtt_init_Connect() { try { //实例化mqtt_client,第一个参数是app的上下文,直接填入就行,然后填入我们定义的serverUri和clientId mqtt_client = MqttAndroidClient(applicationContext, serverUri, clientId) //创建并实例化一个MQTT的连接参数对象 val options = MqttConnectOptions() //然后设置对应的参数 options.userName = userName //设置连接的用户名 options.password = passWord.toCharArray() //设置连接的密码 options.connectionTimeout = 30 // 设置超时时间,单位为秒 options.keepAliveInterval = 60 //设置心跳,30s options.isAutomaticReconnect = true //是否重连 //设置是否清空session,设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接 options.isCleanSession = true //设置回调 mqtt_client!!.setCallback(object : MqttCallbackExtended { override fun connectComplete(reconnect: Boolean, serverURI: String) { //连接成功 makeToast("连接成功") } override fun connectionLost(cause: Throwable) { //连接丢失后,一般在这里面进行重连 makeToast("连接中断") } override fun deliveryComplete(token: IMqttDeliveryToken) { //publish后会执行到这里 } @Throws(Exception::class) override fun messageArrived(topicName: String, message: MqttMessage) { //subscribe后得到的消息会执行到这里面 } }) mqtt_client!!.connect(options) } catch (e: Exception) { e.printStackTrace() } } private fun makeToast(toast_str: String) { Toast.makeText(this@MainActivity, toast_str, Toast.LENGTH_LONG).show() } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)