我想從android service
發佈消息到本地服務器。這裏是我的代碼的一部分,最簡單的形式是基於here的片段。Paho MqttAndroidClient.connect總是失敗
MemoryPersistence memPer;
MqttAndroidClient client;
@Override
public IBinder onBind(Intent intent) {
memPer = new MemoryPersistence();
client = new MqttAndroidClient(this, "tcp://192.168.1.42:1883", "clientid", memPer);
try {
client.connect(null, new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken mqttToken) {
Log.i("MQTT", "Client connected");
Log.i("MQTT", "Topics=" + mqttToken.getTopics());
MqttMessage message = new MqttMessage("Hello, I am Android Mqtt Client.".getBytes());
message.setQos(2);
message.setRetained(false);
try {
client.publish("messages", message);
Log.i("MQTT", "Message published");
client.disconnect();
Log.i("MQTT", "client disconnected");
} catch (MqttPersistenceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MqttException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onFailure(IMqttToken arg0, Throwable arg1) {
// TODO Auto-generated method stub
Log.i("MQTT", "Client connection failed: " + arg1.getMessage());
}
});
} catch (MqttException e) {
e.printStackTrace();
}
return mBinder;
}
但onFailure處函數總是叫我得到的錯誤:
I/MQTT﹕ Client connection failed: cannot start service org.eclipse.paho.android.service.MqttService
顯然是由庫,因爲 '!聽者= NULL',Line 410返回。使用調試器,它顯示'listener = SensorLoggerService $ 1 @ 3634'。 SensorLoggerService是我的服務。
任何想法可能會出錯?非常感謝。
你並不需要添加<服務機器人:名字=「org.eclipse.paho.android.service.MqttService」 />在AndroidManifest.xml這個解決方案,因爲你用泛美衛生組織庫同步任務。要使用android服務,您應該使用MqttAndroidClient而不是MqttClient。 –