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)
				}
			}
		}
	}
 
M

Marcinek

Gast
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.
 

schlingel

Gesperrter Benutzer
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
 

schlingel

Gesperrter Benutzer
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
 

schlingel

Gesperrter Benutzer
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
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Fehlermeldung, brauche Hilfe. Android & Cross-Platform Mobile Apps 2
R Fehlersuche - brauche eure Hilfe Android & Cross-Platform Mobile Apps 10
M height, layout_height, width und layout_width - Wann brauche ich was warum? Android & Cross-Platform Mobile Apps 1
A mCommerce: Brauche mobile Version von Website Android & Cross-Platform Mobile Apps 1
B Brauche Screengröße in pixel angaben Android & Cross-Platform Mobile Apps 5
M Android Kotlin: Bitte dringend um Hilfe Android & Cross-Platform Mobile Apps 2
Mo1234 Plattform in einer App. Bitte um Hilfe! Android & Cross-Platform Mobile Apps 8
M Hilfe bei App Programmierung für Android Android & Cross-Platform Mobile Apps 1
D Hilfe! es geht um Buttons und Sounds Android & Cross-Platform Mobile Apps 14
N Android Hilfe string to float geht nicht... Android & Cross-Platform Mobile Apps 4
L Android Hilfe bei Passwort einlesen Android & Cross-Platform Mobile Apps 5
M Telefonbuch in J2ME programmieren HILFE! Android & Cross-Platform Mobile Apps 34
N "Schöne" Datatable in Android und setzen von Parametern von Textview im Code Android & Cross-Platform Mobile Apps 5
S onClickListener auf Buttons die im Code erzeugt wurden setzen. Android & Cross-Platform Mobile Apps 8
W Code läuft unter SDK 27 aber nicht SDK 30 Android & Cross-Platform Mobile Apps 17
M QR-Code auslesen mit Tabletkamera Android & Cross-Platform Mobile Apps 3
C Auf Play Store verlinken - Code in einer Extraklasse Android & Cross-Platform Mobile Apps 1
D HTML Code von Website abrufen Android & Cross-Platform Mobile Apps 26
K Android Code so OK? Android & Cross-Platform Mobile Apps 0
C Android Code in mehrere .java verteilen Android & Cross-Platform Mobile Apps 6
S Android Speichern von Informationen in Code oder extern Android & Cross-Platform Mobile Apps 0
M Code effizienter machen Android & Cross-Platform Mobile Apps 16
R Android YouTube Video per Code streamen Android & Cross-Platform Mobile Apps 5
L Android Android über Java Code connecten? Android & Cross-Platform Mobile Apps 2
A Android Android-Code.de - Das Android-Entwickler Forum Android & Cross-Platform Mobile Apps 3
R Android Ist das ein akzeptabler Code? Android & Cross-Platform Mobile Apps 7
H Mjpeg Code läuft unter Java jedoch nicht unter Android? Android & Cross-Platform Mobile Apps 11
J Android QR-Code Scanner mit OpenCV/JavaCV Android & Cross-Platform Mobile Apps 1
P J2ME Code-Beispiele Android & Cross-Platform Mobile Apps 2
2 Code ineffizient? Android & Cross-Platform Mobile Apps 6
H HELP! Code verbessern? Android & Cross-Platform Mobile Apps 3

Ähnliche Java Themen

Neue Themen


Oben