palaber
Captain
- Registriert
- Juni 2006
- Beiträge
- 3.856
Hey ho,
folgendes Ding. Ich experementiere momentan mit Bluetooth und Android und PC
Momentan bekomme ich es hin, das ich von nem PC Nachrichten an mein Handy schicke. Das Problem aber ist, dass diese Nachrichten erst nach dem beenden des Servers (verbindungsabbau) dargestellt werden. In der LogCat wird mir gezeigt, dass wenn mein Thread der auf Nachrichten lauscht und diese bekommt dann auch diese weiter an meinen Handler leitet. Im Handler wird aber die Nachricht(en) erst nach beenden des Servers ausgegeben. Wie kann ich denn jede ankommende Nachricht im Handler sofort ausgeben?
Hier mal mein Thread Code, der auf Nachrichten lauscht:
Und hier mein Handler Code:
folgendes Ding. Ich experementiere momentan mit Bluetooth und Android und PC
Momentan bekomme ich es hin, das ich von nem PC Nachrichten an mein Handy schicke. Das Problem aber ist, dass diese Nachrichten erst nach dem beenden des Servers (verbindungsabbau) dargestellt werden. In der LogCat wird mir gezeigt, dass wenn mein Thread der auf Nachrichten lauscht und diese bekommt dann auch diese weiter an meinen Handler leitet. Im Handler wird aber die Nachricht(en) erst nach beenden des Servers ausgegeben. Wie kann ich denn jede ankommende Nachricht im Handler sofort ausgeben?
Hier mal mein Thread Code, der auf Nachrichten lauscht:
Code:
public void run() {
Log.i(TAG, "BEGIN ConnectedThread");
byte[] buffer; // buffer store for the stream
int bytes; // bytes returned from read()
Log.d(TAG, mmSocket.toString() + "Run in ConnectedThread");
// Keep listening to the InputStream until an exception occurs
while (true) {
try {
// Read from the InputStream
buffer = new byte[1024];
bytes = mmInStream.read(buffer);
// Send the obtained bytes to the UI activity
String sOut = new String(buffer);
Log.d(TAG, "ConnectedThread - while schleife - Nachricht geschickt an Handler");
mHandler.obtainMessage(1, bytes, -1, buffer).sendToTarget(); //Nachrichten werden erst angezeigt wenn Verbindung mit Server abgebaut wurde!
} catch (IOException e) {
break;
}
}
Und hier mein Handler Code:
Code:
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 0:
............ //Code für nen anderen Thread - zur besseren Übersicht raus genommen
break;
case 1:
byte[] readBuffer = (byte[])msg.obj; //Empfangene Daten (Byte[]) aus connectedThread werden in neuen byte[] geschrieben
String sOut = new String(readBuffer); //Byte[] umwandeln in String
Log.d(TAG, "Empfangene Daten: " + sOut);
Toast.makeText(getApplicationContext(), sOut, Toast.LENGTH_LONG).show(); //Ausgabe der Msg.
break;
default:
Log.d(TAG, "Bla Bla");
}
}