Hilfe bei Bluetooth App benötigt

C

colajoo

Neues Mitglied
0
Hallo,

Habe eine Android Bluetooth App geschrieben die mir in einer ListView bisher nur anzeigt, welche Bluetooth Geräte mit meinem Handy verbunden sind. Nun möchte ich aber auch eine zweite ListView erstellen, die mir anzeigt, welche Geräte in der Nähe verfügbar sind. Ich glaube es geht über einen BroadCastReceiver aber wie der genau funktioniert weiß ich leider nicht, wäre schön wenn mir da jemand weiterhelfen könnte :biggrin:

Gruß

colajoo
 
wenns so leicht wäre hätte ich es schon längst gemacht xD
 
Okay, dann will ich mal versuchen etwas individueller zu helfen.

Vorab drei Fragen:
1. Rufst du discovery() auf? Was passiert danach? Logcat hilft.
Vielleicht schon mal zu besagter Funktion: Ist eine Methode des BT-Adapters, mit der man, wie der Name schon vermuten lässt, nach Geräten sucht. Die Suche sollte man irgendwann im Programm wieder manuell deaktivieren. Wenn pausenlos nach neuen Geräten gesucht wird hat das immer großen Einfluss auf den Akkuverbrauch und kann ggf. sogar die Stabilität der Verbindung beeinträchtigen.
2. Bist du sicher, dass deine Geräte gefunden werden können (Sichtbarkeit aktiv)?
3. Bist du sicher, dass deine Geräte sich beim Suchlauf in Reichweite befinden und eingeschaltet sind (man weiß ja nie^^)?

Steht aber auch alles in dem Link der Doku. Sonst fällt mir momentan nichts ein wie man dir helfen könnte. :)
Hilfreich wäre dein aktueller Code, bzw. ein paar sachdienliche Logs.

Beste Grüße
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: DerBerliner2011
Hey,

danke für die schnelle Hilfe keine Ahnung was da los war habs grad vor Frust noch mal alles neu geschrieben und jetzt gehts :D... und danke für den link hat weitergeholfen ich habs mit ner anderen seite probiert die nicht so gut erklärt war^^ eine frage hätte ich da noch falls du oder jemand anders sich damit auskennt... habe jetzt eine liste aller gefundenen geräte und wollte jetzt gerne diese nur dann anzeigen wenn auch geräte da sind... denn im moment habe ich es so dass wenn geräte gefunden werden dann werden sie einer arraylist hinzugefügt aber wenn sie nicht mehr verfügbar sind weil außer reichweite oder ausgeschaltet möchte ich sie nicht mehr in meiner liste haben, da ich für meine app keinen cancelDiscovery Befehl möchte... mein code zum einfügen in die ArrayList ist:

Code:
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
     BluetoothDevice deviceFound = intent
          .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
     foundAdapter.add("Name: " + deviceFound.getName()
          + "\nAddress: " + deviceFound.getAddress());
}
 
Hallo,

meiner Einschätzung nach ist der Aufruf von cancleDiscovery() keine Frage von persönlicher Präferenz.
Womöglich hat die API gewisse Schutzmechanismen, die greifen, wenn die Activity beendet wird, aber kein cancleDiscovery seitens deiner App erfolgte.
Ich schließe solche Fehlerquellen immer gerne grundsätzlich aus, deswegen halte ich besagten Aufruf für absolut notwendig.

Ist die Liste bei dir noch gefüllt weil die sie irgendwie noch im Cache hast, oder wie hat man sich das vorzustellen? Du lädst sie ja nicht mehr mit den "bondedDevices" oder? Vielleicht hilft es ja schon die Liste in onResume bzw. in onStop/onDestroy zu leeren. Was hier sinnvoll ist kannst nur du entscheiden :)

Als kleiner Tipp:
Immer erst die Doku zum Thema XY durchlesen (vielleicht sogar 2x) und dann anfangen, oder wenn noch Fragen offen sind sich auf anderen Seiten Hilfe suchen. Ich will keine großen Vorhaltungen machen, meine persönliche Erfahrung ist nur, dass man sich mit dieser Vorgehensweise viel Ärger und viel Arbeit erspart.
Derzeit kenne ich nur eine Seite, die ähnlich "sicher" die Inhalte beschreibt: vogella.com
 
  • Danke
Reaktionen: DerBerliner2011
Quelle: Google Android Doku

Caution: Performing device discovery is a heavy procedure for the Bluetooth adapter and will consume a lot of its resources. Once you have found a device to connect, be certain that you always stop discovery with cancelDiscovery() before attempting a connection. Also, if you already hold a connection with a device, then performing discovery can significantly reduce the bandwidth available for the connection, so you should not perform discovery while connected.
 
  • Danke
Reaktionen: ui_3k1

Ähnliche Themen

D
Antworten
17
Aufrufe
407
datNeMo
D
M
Antworten
3
Aufrufe
164
moin
M
R
  • RudolfHagen
Antworten
1
Aufrufe
652
koje71
koje71
Zurück
Oben Unten