1
当您第一次打开应用程序时,我想要一个屏幕,您可以在其中输入代理信息并单击尝试并保存。使用Paho MqttClient在Android上尝试使用Mqtt连接
当点击尝试时,它应该只显示一个Snackbar
说如果信息成功连接。
这是当按下试按钮,我叫代码:
private void tryConnection(View v){
if(verifyInputs()){
Snackbar.make(v, getString(R.string.trying_connection), Snackbar.LENGTH_LONG).show();
String clientId = MqttClient.generateClientId();
MqttAndroidClient client =
new MqttAndroidClient(this.getApplicationContext(), getServerAddress(),
clientId);
try {
IMqttToken token = client.connect();
final View vinner = v;
token.setActionCallback(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
// We are connected
Snackbar.make(vinner, "Success", Snackbar.LENGTH_LONG).show();
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
// Something went wrong e.g. connection timeout or firewall problems
Snackbar.make(vinner, "Fail", Snackbar.LENGTH_LONG).show();
}
});
} catch (MqttException e) {
e.printStackTrace();
}
}
}
的问题是,onFailure
似乎并不当它不能连接到服务器被调用,但是当一个连接服务器丢失。
我该如何测试连接,以便我可以存储它并返回到主要活动?
嗨!我正在使用你的服务,或者至少尝试。你能解释我怎样才能订阅?我完全失去了,已经在这个小时 –
@NelsonSilva有一个MQTT的onSuccess回调。一旦与经纪人的连接成功,该方法将被调用。所以你所要做的就是在那里调用'subscribe'方法,并把你正在订阅的'topic'作为参数传入。您是否收到任何错误或任何特定问题? –
其实我已经尝试了很多东西,我不知道从哪里开始。我一直在YouTube上观看视频,使用“ServiceConnection”和绑定服务,但我无法到达任何地方。当我尝试订阅时,我得到一个空对象引用上的> org.eclipse.paho.android.service.MqttAndroidClient.subscribe(java.lang.String,int)'。另外,为了使订阅我需要一个IMqttToken?我很失落,对不起......我不明白从服务内部调用方法的正确方法 –