Thread und InputStream - Schreiben geht, Lesen nicht -> HÄ ?

  • 0 Antworten
  • Letztes Antwortdatum
Raider

Raider

Neues Mitglied
0
Moin Leutz,

Versuche insgesamt einfache Bluetooth App zu schreiben,
die mit einem andern Bluetooth Device kommunizieren kann.

Auf einem Nexus 5 befindet sich meine App und auf einem Samsung S3 befindet sich eine Terminal APP aus dem GoogleStore

Verbinden klappt super und auch das Senden einer Nachricht von meiner APP an das Terminal.
Das Empfangen der Nachrichten die ich von Terminal sende funktioniert nicht.

Vorab (Habe das Terminal mit einer BluetoothChat APP getestet funktioniert einwandfrei )

Selbstverständlich habe ich mich auch selbst auf die Fehlersuche gemacht.
Das Ergebnis zudem ich gekommen bin ist , dass ich überhaupt nicht in das try springe indem der INPUT STREAM gelesen wird

Ich zeige ich das am besten am Code :

HTML:
    private class ConnectedThread extends Thread {
        private final BluetoothSocket mmSocket;
        private final InputStream mmInStream;
        private final OutputStream mmOutStream;

        public ConnectedThread(BluetoothSocket socket) {
            mmSocket = socket;
            InputStream tmpIn = null;
            OutputStream tmpOut = null;
            Log.e("Tag", "IM TRY");
            // Get the input and output streams, using temp objects because
            // member streams are final
            try {
                tmpIn = socket.getInputStream();
                tmpOut = socket.getOutputStream();
                Log.e("Tag", "IM TRY____LESEN");
            } catch (IOException e) { }

            mmInStream = tmpIn;
            mmOutStream = tmpOut;
        }
        ///der WILL HIER NICHT REIN
        public void run() {
            byte[] buffer;  // buffer store for the stream
            int bytes; // bytes returned from read()
            Log.e("TAG","HIER WILL DER NICHT REIN");
            // Keep listening to the InputStream until an exception occurs
            Log.e("TAG","HIER WILL DER NICHT REIN");
            while (true) {
                try {
                    buffer = new byte[1024]; // reset buffer
                    // Read from the InputStream
                    Log.e("TAG","HIER WILL DER NICHT REIN");
                    bytes = mmInStream.read(buffer);//buffer)
                    Log.d("TAG", Integer.toString(bytes));
                    // Send the obtained bytes to the UI activity
                    mHandler.obtainMessage(MESSAGE_READ, bytes, -1, buffer)
                            .sendToTarget();
                } catch (IOException e) {
                    Log.e("TAG","HIER WILL DER NICHT REIN");
                    break;
                }
            }
        }

        /* Call this from the main activity to send data to the remote device */
        public void write(byte[] bytes) {
            try {
                mmOutStream.write(bytes);
            } catch (IOException e) { }
        }

        /* Call this from the main activity to shutdown the connection */
        public void cancel() {
            try {
                mmSocket.close();
            } catch (IOException e) { }
        }
    }


und hier mein HANDLER der den Mist verarbeiten soll

HTML:
 private final Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            switch(msg.what){
                case SUCCESS_CONNECT:
                //Starte Thread Connected
                    Log.e("Tag", "ERFOLGREICH VERBUNDEN___ STARTE NUN mconnectedThread");
                ConnectedThread mconnectedThread = new ConnectedThread((BluetoothSocket)msg.obj);
                String a = "ERSTE NACHRICHT";
                //String a kommt perfekt am Terminal an
               //aber hier fängt der Salat an
                mconnectedThread.write(a.getBytes());

                break;
                case MESSAGE_READ:
                    Log.e("Tag", "READ MESSAGE___BIN DRINNEN");
                    byte[] readBuf = (byte[]) msg.obj;
                    // construct a string from the valid bytes in the buffer
                    String readMessage = new String(readBuf, 0, msg.arg1);
                    Log.e("Tag", "TEXT ERHALTEN = "+readMessage);
                    break;
            }
        }
    };

Alles befindet sich in der MainActivity habe also keine neuen Klassen erstellt
//Wäre natürlich übersichtlicher aber wenn das Lesen klappt kann ich ja noch auslagern:laugh:

Mir ist absolut nicht klar warum ich keine Nachrichten erhalte
Einer ne Ideeeeee? :D

LG Raider

Der ursprüngliche Beitrag von 03:55 Uhr wurde um 03:57 Uhr ergänzt:

Vielleicht etwas besser formuliert:
Ich komme in die run() Methode in der der InputStream gelesen wird nicht rein
Kann mir nicht erklären wieso

Der ursprüngliche Beitrag von 03:57 Uhr wurde um 03:58 Uhr ergänzt:

Ist aber mit LOG ausführlich im Code gekennzeichnet ( werden ihr sicher gleich sehen ) :D
 

Ähnliche Themen

S
Antworten
0
Aufrufe
311
stru65
S
X
Antworten
0
Aufrufe
281
xyzUpdate
X
Zurück
Oben Unten