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?我很失落,對不起......我不明白從服務內部調用方法的正確方法 –