- Forum-Beiträge: 1
24.11.2014, 20:58:30 via Website
24.11.2014 20:58:30 via Website
Moin Moin!
Ich bin noch Android Anfänger, verstehe jedoch schon vieles ganz gut denke ich.
Meine App baut eine Bluetooth Verbindung als Server auf und hält diese. Das funktioniert gut.
Hierfür habe ich folgende Klasse von PieterDD herangezogen: LINK darf ich noch nicht posten
Im Grunde macht er nichts anderes als eine Bluetooth Verbindung aufzubauen und diese in einen Async Thread zu schieben.
Initiert wird das ganze in der Main Activity hiermit:
BtClientTask clientTask = new BtClientTask(target);
clientTask.execute(new BtConnectionEstablishedCallback() {
@Override
public void connectionEstablished(BluetoothSocket socket) {
_btCurCon = new BtConnectionTask(socket, new BtIncomingDataCallback() {
@Override
public void incomingData(String text) {
label.setText(text);
}
});
_btCurCon.execute();
_btCurCon.send("Hello world!");
}
});
Wie man dort sieht kann ich mit "incomingData" die eingehenden Daten auswerten.
Mit der send() Methode kann ich an beliebiger Stelle im Programm auch Data nun verschicken.
Alles soweit schön und gut.
Jetzt mein Problem.
Ich habe hier eine Liste von Befehlen die ich per Bluetooth an meine Maschine senden möchte.
Beispiel
- Befehl - Mach irgendwas - 10 Sekunden lang
- Befehl - Mach irgendwas - 12 Sekunden lang
- Befehl - Mach irgendwas - 5 Sekunden lang
- ........
Diese Befehle an die Maschine zu senden geht ja mit send() easy und das klappt auch wunderbar, nur macht Android das ja ganz schnell und somit führt meine Maschine immer nur den letzten Befehl aus der geschickt wurde.
Ich muss also eine Abfrage implementieren, wenn Befehl 1 geschickt wurde, warte bis Maschine "OK" gesagt hat und sende anschließend "Befehl 2". Bis die ganze Liste abgearbeitet ist.
Hier zu muss ich irgendwie ein Variable deklarieren die ich hin und her schalte, wenn etwas geschickt wurde "null" setzen. dann wird nichts mehr geschickt. Die RecieveMethode muss sie wieder "eins" setzen, wenn die maschine "ok" zurück gemeldet hat. Dann soll die Schleife weiter gehen und der Zweite befehl gesendet werden.
Wie kann ich soetwas umsetzen, ich muss ja eine Schleife anlegen und irgendwie Daten zwischen Methoden austauschen, die aber in einem Execute teilweise drin sind.
Hilfe