Brauche Hilfe bei Code Snippet

Hey,
habe eine App gemacht und dabei einen Teil (Aufbauen der RFCOMM Verbindung) kopiert, weil ich es nicht geschafft habe es selber zu machen, da ich neu bei Java bin. Jetzt bräuchte ich jemanden der mir diesen Teil erklären kann.
Danke schonmal im Voraus,
Gruss

Java:
protected void connect(BluetoothDevice device) {
		//BluetoothSocket socket = null;
		try {
			socket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
			
			socket.connect();
		
			inputStream = socket.getInputStream();														
			outputStream = socket.getOutputStream();
			int read = -1;
			final byte[] bytes = new byte[2048];
			for (; (read = inputStream.read(bytes)) > -1;) {
				final int count = read;
				handler.post(new Runnable() {
					public void run() {
						StringBuilder b = new StringBuilder();
						for (int i = 0; i < count; ++i) {
							String s = Integer.toString(bytes[i]);
							b.append(s);
							b.append(",");
						}
						String s = b.toString();
						String[] chars = s.split(",");
						sbu = new StringBuffer();  
						 for (int i = 0; i < chars.length; i++) {  
						        sbu.append((char) Integer.parseInt(chars[i]));  
						    }
						if(str != null)
						{		
							sTextView.setText(str + "<-- " + sbu);
							str += ("<-- " + sbu.toString());
						}
						else
						{
							sTextView.setText("<-- " + sbu);
							str = "<-- " + sbu.toString();
						}
						str += '\n';
					}
				}); 
			}
			
		} catch (IOException e) {
			finish();
			return ;
		} finally {
			if (socket != null) {
				try {
					socket.close();	
					finish();
					return ;
				} catch (IOException e)
				}
			}
		}
	}
 
Irgentwas, was dann auch von dir kommt? Glaube nicht, dass jetzt jemand diesen Code hier im Detail erklärt.

Vieleicht mal die unbekannten Codestücke bei google nachfragen? Hier wird jetzt keine Magie verwendet.
 
Sogar wenn man wollte, fehlen hier essentielle Informationen.

Was ist das handler-Objekt? View? Irgend etwas anderes?

Wo kommt str her?

Warum ist sbu eine Instanzvariable? Wo wird die außerhalb der Methode verwendet?

Warum wandelt diese seltsame Schleife alle erhaltenen Bytes in Strings um die wiederum per Kommas getrennt sind nur im sie im nächsten Schritt wieder aufzutrennen und die einzelnen Zeichen als einen String zu verwenden? Was soll die Methode überhaupt tun?

Der Code wirkt etwas wirr.
 
Hey,
ja sry da fehlen echt einige Angaben.

Die Variablen werden hier aufgesetzt und die klasse ist folgende:

Java:
public class Client extends Activity											// main
{
	private static final int REQUEST_DISCOVERY = 0x1;							// Flag für den Start der Suche
	private Handler handler = new Handler();									// Handler definieren
	private BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();	// Bluetooth Adapter definieren
	
	private BluetoothSocket socket = null;										// Socket aufsetzen und löschen
	private TextView sTextView;													// TextView Variable aufsetzen
	private String str;															// String Speicher
	private OutputStream outputStream;											//
	private InputStream inputStream;											// 
	private StringBuffer sbu;													// Zwischenspeicher für Strings

sbu wird sonst nirgends verwendet nur in dieser Funktion, str auch. Die Funktion sollte das, aus einer Liste angeklicktes Gerät verbinden. Wie es genau Funktioniert verstehe ich aber nicht.
Gruss
 
Das ist ganz einfach: Die Verbindung wird mit diesen Zeilen aufgebaut:
Java:
            socket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")); // erzeugt das Bluethooth-Socket-Objekt von der gegebenen UUID. Laut Doku ist die übergebene UUID die eines Standard-Bluethooth-Boards
            
            socket.connect(); // Baut die verbindung auf
        
            inputStream = socket.getInputStream(); // wie bei TCP/UDP auch, jetzt kannst du vom socket lesen                                                 
            outputStream = socket.getOutputStream(); // und darauf schreiben

Der Rest des Codes ist nur eine sehr umständliche Art raus zu schreiben was die Gegenseite rüberschickt.
 
@Schlingel

Hey, das heisst alles andere könnte ich weg lassen und ich könnte mich trotzdem Verbinden und "schreiben" aber nicht mehr lesen was von der anderen Seite kommt?
Da ist noch was das ich nicht verstehe, woher weis ich was für eine UUID ich eingeben muss? Woher kommt diese Nummer?
Gruss
 
Schreiben und Lesen wickelst du mit dem OutputStream und dem InputStream ab. Schreiben und Lesen kannst du schon, wenn du den jeweiligen Stream offen hast.

Bzgl. UUID - Aus der Doku. Entweder du weißt ganz genau welches Bluetooth-Device du ansprechen willst und besitzt die UUID oder du horchst auf Bluetooth-Intents in deiner App. Siehe auch hier.
 
Hey,
Danke viel mal für deine Hilfe, hat mich weitergebracht, hab aber noch eine letzte Frage:
Diese UUID die ich benutzte ist für die Standart SPP Verbindung, stimmt das?
Gruss
 

Zurück
Oben