Sono nuovo per Android e servizi. Il mio obiettivo è essere in grado di impostare abbonamenti e pubblicazioni su stringhe di argomenti. Le stringhe dell'argomento e l'ID del client vengono impostati dopo l'analisi dell'inserimento dei campi di testo. Sto usando il Paho MQTT service (scaricato l'origine e costruito il JAR).android - Servizio Paho MQTT per la pubblicazione
Le cause seguenti sono un'eccezione di puntatore nullo a c.publish()
. Lo logcat
mostra l'eccezione nel metodo IMqttDeliveryToken publish(String topic, MqttMessage message, Object userContext, IMqttActionListener callback)
in MqttAndroidClient
dove viene preso un token di consegna.
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();
}
Potete dirmi come utilizzare il servizio per pubblicare e iscriversi? Ho fatto scorrere il progetto di esempio (da Paho Android). LWT e pubblicazione sembrano essere uniti in quanto il layout per LWT (activity_publish.xml
) sembra essere utilizzato anche per la pubblicazione.
Th è davvero interessante, ma come si può dire che questo metodo farà il lavoro asincrono? In C# non è possibile avere tale implementazione dal momento che il metodo connect() dovrebbe essere etichettato async per evitare tali errori. –