Kłaniam się nisko i witam wszystkich forumowiczów jako nowy użytkownik (od 5 minut) tego forum :-)
Do sedna.
Zacznę od tego, że implementuję komunikację zgodnie z tym:
https://developer.android.com/guide/topics/connectivity/bluetooth#java
Mam problem z tym w jakiej formie podawać dane do "wypychania" z urządzenia nadającego oraz jakich mechanizmów używać po odebraniu bajtów, aby dane nie były w formie "krzaczków" czyli totalnie niezrozumiałe.

Urządzenie nr 1 używa tej funkcji:

public void write(byte[] bytes) {
            try {
                mmOutStream.write(bytes);
               
            } catch (IOException e) {}
        }

natomiast urządzenie nr 2 odbiera bajty stąd:

public void run() {
            
            mmBuffer = new byte[1024];
            int numBytes; // bytes returned from read()

            // Keep listening to the InputStream until an exception occurs.
            while (true) {
                try {
                    // Read from the InputStream.
                    numBytes = mmInStream.read(mmBuffer);
                    String str = new String(mmBuffer,0,numBytes,"UTF-8");
                    Log.d("BLUTU", "Odczytałem coś nawet: "+str);
                } catch (IOException e) {

                    break;
                }
            }
        }

Teraz tak: Chcę wysłać z urządzenia nr 1 dajmy na to takie cztery bajty danych:
0xFF oraz 0x01.
Funkcja do wysyłki przyjmuje tablicę bajtów więc muszę tak:

byte[] ciagbajtow= {
                (byte) 0xFF;
                (byte) 0x01;
        };

a później wywołać funkcję:

write(ciagbajtow);

Po wysłaniu czegoś takiego po stronie odbiornika dostaję takie coś, czyli "krzaki" o których mówiłem(załącznik).

Zastanawiam się, czy dobrze formuję tablicę bajtów danych wpisując wartości heksadecymalne do niej.