Я новичок в Android и сервисах. Моя цель - настроить подписку и делать публикации по темам. Строки темы и идентификатор клиента настраиваются после разбора ввода текстовых полей. Я использую сервис Paho MQTT (загрузил источник и построил JAR).
Ниже приведено исключение Null Pointer в c.publish()
. logcat
показывает исключение в методе IMqttDeliveryToken publish(String topic, MqttMessage message, Object userContext, IMqttActionListener callback)
в MqttAndroidClient
, где выполняется маркер доставки.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Set locale;
l = getResources().getConfiguration().locale;
}
@Override
protected void onResume() {
super.onResume();
addButtonListener();
}
private void addButtonListener() {
Button submitButton = (Button) findViewById(R.id.buttonSubmit);
submitButton.setOnClickListener(new OnClickListener() {
// ...
// validation code for fields in layout
// ...
// Finally, this.
MemoryPersistence mPer = new MemoryPersistence();
String clientId = UUID.randomUUID().toString();
String brokerUrl = "tcp://m2m.eclipse.org:1883";
MqttAndroidClient c = new MqttAndroidClient(getApplicationContext(), brokerUrl, clientId, mPer);
try {
c.connect();
String topic = "transfers/topic";
String msg = "topic payload"
MqttMessage m = new MqttMessage();
m.setPayload(msg.getBytes());
m.setQos(2);
m.setRetained(false);
c.publish(topic, m);
} catch (MqttException e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
Не могли бы вы рассказать мне, как использовать услугу для публикации и подписки? Я просмотрел образец проекта (от Paho Android). LWT и публикация, похоже, объединены, поскольку макет для LWT (activity_publish.xml
), по-видимому, также используется для публикации.