我想从 Android 发布消息service
到本地服务器。这是我的代码的一部分,以最简单的形式基于片段here https://stackoverflow.com/questions/24791118/android-paho-mqtt-service-for-publishing.
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
显然是由库返回的,因为“listener!= null”,Line 410 http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.java.git/tree/org.eclipse.paho.android.service/org.eclipse.paho.android.service/src/org/eclipse/paho/android/service/MqttAndroidClient.java。使用调试器,它显示“listener = SensorLoggerService$1@3634”。 SensorLoggerService 是我的服务。
知道可能出了什么问题吗?多谢。