Bluetooth zwischen Smartphone und Raspberry pi

  • 12 Antworten
  • Letztes Antwortdatum
A

AMDFX

Gast
Hey,

wie der Titel schon verrät, muss ich momentan eine App entwickeln, bei der ich eine Bluetooth Verbindung zwischen einem Smartphone und einem raspberry pi herstelle und zusätzlich Informationen vom raspberry pi empfange.
Ich muss keine Informationen senden und empfange lediglich kurze Stringnachrichten.
Das Tutorial auf developer.android zum Thema Bluetooth gefällt mir eher weniger und ich hoffe daher auf gute Idee speziell zu meiner Anforderung!

Wäre über Hilfe sehr dankbar!
 
Was genau gefällt dir denn an dem Tutorial nicht?
Ich hab selbst noch kein Bluetooth benutzt und gerade mal kurz in das Tutorial reingeguckt, da scheint mir doch alles wichtige erklärt zu sein.
Woran scheiterst du denn? Verbindung aufbauen oder Daten lesen?
 
Also bei den Samples ist ja ein Bluetooth Chat dabei, welchen ich für meinen Zweck eig. gerne nutzen wollte. Dort werden ja schließlich auch Daten übertragen... Wenn ich nun aber verbinden will, dann stürtzt die App ab. :unsure:
 
Mit welcher Fehlermeldung?
LogCat Ausgabe wäre gut.
Meine Glaskugel ist gerade nicht da ;)
 
Ich habe keine Fehlermeldung. Die App friert ein bzw. das ganze Handy und nach ein paar Sekunden wird mir lediglich gesagt, dass die Anwendung unterbrochen wurde.

Es gibt eine Möglichkeit, dass die App nicht mehr abstürzt.
Wenn ich in der connect Funktion setState(STATE_CONNECTING); auskommentiere, dann läuft alles weiter aber ein Verbindungsaufbau findet auch nicht statt. ("Unable to connect" oder so ähnlich :razz:).

Andererseits ist das STATE_CONNECTION nur in der private class AcceptThread von bedeutung und die ist, laut developer.android, nur wichtig wenn ich eine Anfrage von einem anderen Gerät erhalte aber nicht selber sende...
Macht für mich momentan alles keinen Sinn :unsure:
 
einfrieren klingt stark danach, dass du die bluetooth verbindung in deinem UI Thread aufrufst.
Wenn dann eine Methode blockiert friert die Anwendung ein. Und wenn das zu lange dauert, dann stürzt die Anwendung irgendwann ab.

Wo nutzt due denn setState() ?
In dem Tutorial wird das nirgends genutzt.
 
Deine Vermutung war korrekt und ich konnte es auch beheben ;)
Es kann nun sogar eine Verbindung erfolgreich aufgebaut werden :)

Leider habe ich noch ein Problem, welches ich mir noch weniger erklären kann (bin halt noch ziemlich neu in der Android Welt): Wenn ich mein Smartphone kippe, dann sollte sich die App ja auch drehen aber erneut friert die Anwendung ein! Manchmal dreht sich die App auch noch aber spätestens dann ist schluss (meistens aber schon vorher).

Mir sind da jetzt auch keine Codestellen bekannt, die das Problem verursachen könnten bzw. welche ich hier zeigen könnte.
Vielleicht eine Idee woran es liegt?
 
"When the screen orientation changes, the system destroys and recreates the activity in order to apply alternative resources that might be available for the new screen configuration."

Du musst mal schauen ob du evtl in der OnCreate oder in den anderen Lifecycle Methoden irgendwas hast, was eigentlich nur einmal ausgeführt werden soll (Beisielsweise die Verbindung aufbauen oder so.)
Sonst fällt mir auf Anhieb auch nix ein
 
War ein Fehler in der OnDestroy() Funktion!

Ich würde noch gerne eine Sache Fragen wollen (sorry bin halt noch totaler Anfänger in Android):
Wenn ich mein smartphone nun drehe, erfolgt danach ja ein erneuter Aufruf von OnCreate. Dadurch wird aber immer wieder setContentView aufgerufen und ich lande immer wieder bei dem Layout von der main_activity, also immer dem Startbildschirm.

Gibt es irgendwo gute und am Besten nicht so ewig in die länge gezogene Tutorials, wie man das richtig macht?
 
Das man bein Startbildschirm landet ist doch aber richtig, wenn du diesen gedreht hast.
Oder öffnest du keine anderen Activities sondern änderst dein layout wenn du durch die App navigierst?

Dann solltest du das mal überarbeiten.
Ansonsten musst du dir den aktuellen status merken und in der OnCreate wieder setzen.
 
Ich änder nur das Layout.
Aber wenn ich das richtig verstehe, sollte man bei einem neuen Layout auch eine neue Activity nehmen, ja?
 
Das ist der richtige weg.
oder du musst dir halt irgendwie merken welches layout du zuletzt hattest
und das wieder setzen.

Aber das ist meiner Meinung nach rumgemurkse.
Die Idee ist: Eine Acitivity für eine Aufgabe
 
So ich habe nochmal Informationen wegen der Verbindung vom Smartphone und Raspberry Pi.

Das Raspberry pi soll die Informationen per obex object push senden.
Das klappt an sich schon, bloß kommt eben ein Dialog und die Datei (.txt) wird wo gespeichert.

Kann ich per App diese Abfrage (also Datei annehmen/ablehnen) auch durch die App abfangen und die .txt Datei direkt in der App öffnen? Müsste dort einen string auslesen.
 
Zurück
Oben Unten