gpt4 book ai didi

java - MQTT Android Studio 和 Raspberry PI 代理

转载 作者:太空宇宙 更新时间:2023-11-04 10:55:53 25 4
gpt4 key购买 nike

我正在学习 MQTT 和 Android Studio。我想在 Android Studio 中制作一个简单的应用程序,但我已经奋斗了 4 天,无法应对。

应用说明:1 按钮 ---> 按下 ---> 发送到 mqtt 主题/消息 ( "mqtt"/"test")仅此而已。

Mqtt Broker = rpi (IP: namerpibrok.ddns.net ) 

经纪商工作正常,不需要密码或用户名

问题出在应用程序上 - 这是我第一次使用 Android Studio 进行工作。

我按照页面上的描述做了一切:https://www.hivemq.com/blog/mqtt-client-library-enyclopedia-paho-android-service

现在,当我按下按钮时......什么也没有发生。

    MqttAndroidClient client;

private static final String TAG = "LOG";

// Used to load the 'native-lib' library on application startup.
static {
System.loadLibrary("native-lib");
}

private Object bytes;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


String clientId = MqttClient.generateClientId();
client = new MqttAndroidClient(this.getApplicationContext(), "rpidomwroled.ddns.net:1883", clientId);

MqttConnectOptions options = new MqttConnectOptions();

try {
IMqttToken token = client.connect(options);
token.setActionCallback(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
// We are connected
Toast.makeText(MainActivity.this,"Połączono", Toast.LENGTH_LONG).show();

}

@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
// Something went wrong e.g. connection timeout or firewall problems
Toast.makeText(MainActivity.this,"Połączono", Toast.LENGTH_LONG).show();

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



MqttAndroidClient client;

private static final String TAG = "LOG";

// Used to load the 'native-lib' library on application startup.
static {
System.loadLibrary("native-lib");
}

private Object bytes;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


String clientId = MqttClient.generateClientId();
client = new MqttAndroidClient(this.getApplicationContext(), "rpidomwroled.ddns.net:1883", clientId);

MqttConnectOptions options = new MqttConnectOptions();

try {
IMqttToken token = client.connect(options);
token.setActionCallback(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
// We are connected
Toast.makeText(MainActivity.this,"Połączono", Toast.LENGTH_LONG).show();

}

@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
// Something went wrong e.g. connection timeout or firewall problems
Toast.makeText(MainActivity.this,"Połączono", Toast.LENGTH_LONG).show();

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

public void pub(View v)
{
String topic = "mqtt";
String payload = "mqtt";
byte[] encodedPayload = new byte[0];
try {
encodedPayload = payload.getBytes("UTF-8");
MqttMessage message = new MqttMessage(encodedPayload);
client.publish(topic, message);
} catch (UnsupportedEncodingException | MqttException e) {
e.printStackTrace();
}
}

}

谁能告诉我我做错了什么?

最佳答案

这段代码对我有用

String topic = "mqtt";
MqttMessage message = new MqttMessage();
message.setPayload("Message from IoT dev".getBytes());
client.publish(topic, message);

您可以通过以下方式获得回电

client.setCallback(new IoTCallbacks() {
@Override
public void connectionLost(Throwable cause) {

}

@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {

}

@Override
public void deliveryComplete(IMqttDeliveryToken token) {

}
});

关于java - MQTT Android Studio 和 Raspberry PI 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47327529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com