Когда вы впервые открываете приложение, я хочу, чтобы на экране вы могли ввести информацию о брокере и нажать кнопку «Попробовать и сохранить».Пытаясь подключиться к Mqtt на Android с помощью Paho MqttClient
При нажатии кнопки «Попробовать» следует просто показать 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 существует обратный вызов 'onSuccess' для MQTT. Как только соединение с брокером будет успешным, этот метод будет вызван. Итак, все, что вам нужно сделать, это вызвать метод 'subscribe' и перейти в« тему », на которую вы подписались как параметр. Вы получаете какие-либо ошибки или какие-либо конкретные проблемы? –
На самом деле я пробовал так много вещей, что я не знаю, с чего начать. Я смотрю видео на YouTube, используя «ServiceConnection» и привязывая службу, но я не могу никуда не попасть. когда я пытаюсь подписаться, я получаю a> org.eclipse.paho.android.service.MqttAndroidClient.subscribe (java.lang.String, int) 'на ссылке нулевого объекта. Кроме того, чтобы подписаться, мне нужен IMqttToken? Я так потерял, извините ... Я не понимаю, как правильно вызвать метод изнутри службы. –