android - Paho MQTT-service für die Veröffentlichung
Ich bin neu auf Android und Dienstleistungen. Mein Ziel ist es, in der Lage sein, Abos und stellen Publikationen zum Thema strings. Das Thema Saiten und die client-ID, set-up-nach der Analyse-input-text-Felder. Ich bin mit dem Paho MQTT service (heruntergeladen die Quelle und baute die JAR).
Folgende Ursachen für eine Null-Zeiger-Ausnahme auf c.publish()
. Die logcat
zeigt die Ausnahme bei der IMqttDeliveryToken publish(String topic, MqttMessage message, Object userContext, IMqttActionListener callback)
Methode in MqttAndroidClient
wo eine Lieferung token genommen wird.
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();
}
Können Sie mir bitte sagen, wie der Dienst zu verwenden, zu veröffentlichen und abonnieren ? Ich habe Blättern Sie durch die Beispiel-Projektes (von der Paho Android). Der LWT und zu veröffentlichen, scheint zusammengeführt werden, wie das layout für LWT (activity_publish.xml
) scheint zu sein, verwendet für die Veröffentlichung als gut.
InformationsquelleAutor cogitoergosum | 2014-07-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
NullPointerException
ist, weilconnect()
ruft eine asynchrone Methode und Sie benötigen zur Umsetzung eineActionListener
.Im Falle des Erfolges könnten Sie Nachrichten senden.
InformationsquelleAutor J3ernhard
Es ist sehr wichtig zu verstehen, dass Sie aufrufen müssen-client.setCallback und implementieren MqttCallbackHandler, um zu empfangen, Nachrichten zu den Themen, zu denen Sie sich angemeldet haben.
Hier ist ein Beispiel für code, können beide veröffentlichen und abonnieren etc.
Den folgenden code zunächst veröffentlicht die mqtt Thema und Nutzlast:
Den code abonniert das Thema "tester". Wenn es eine Nachricht empfängt, die mit dem Thema "tester" und Nutzlast der "Alarm Aktiviert" ist, dann veröffentlicht das folgende Thema und Nutzlast (über die callback oben erwähnt):
Alarm ist Aktiviert.
Wenn Sie mit Mosquitto dann den folgenden Befehl in das terminal würde dies dazu führen, die Nachricht, die entlassen werden aus:
, Wo mein Mosquitto Benutzername ist fred und mein Passwort ist 1234
Code:
InformationsquelleAutor CMP