앱을 처음 열면 브로커 정보를 입력하고 시도해보고 저장할 수있는 화면이 필요합니다.Paho MqttClient를 사용하여 안드로이드에서 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'을 매개 변수로 전달하는 것입니다. 어떤 오류 또는 특정 문제가 있습니까? –
사실 나는 어디에서 시작 해야할지 모르겠다는 많은 것들을 시도했다. 나는 "ServiceConnection"을 사용하고 서비스를 바인딩하면서 유튜브에서 비디오를 보았지만 아무 것도 할 수 없었다. 구독하려고하면 null 객체 참조에서> org.eclipse.paho.android.service.MqttAndroidClient.subscribe (java.lang.String, int) '를 얻습니다. 또한 구독하려면 IMqttToken이 필요합니까? 그래서 잃어버린, 미안 해요 ... 나는 서비스 내부에서 메서드를 호출하는 적절한 방법을 이해하지 못합니다. –