Anzeige welche verfügbaren Bluetooth-Geräte in der Nähe sind

  • Antworten:11
Peter Parker
  • Forum-Beiträge: 36

23.01.2014, 10:38:35 via Website

Hallo,
ich versuche gerade eine Bluetooth Schnittstelle herzustellen. Leider wird mir nichts angezeigt welche Geräte in der Nähe sind. Weiß jemand was ich falsch mache? Das ist mein Code:


public void suchen(View view) {
btAdapter.startDiscovery();
}


private final BroadcastReceiver receiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();

if(BluetoothDevice.ACTION_FOUND.equals(action)){
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DE VICE);
devices.add(device);
}
}
};

— geändert am 23.01.2014, 10:42:59

Antworten
Klaus
  • Blogger
  • Forum-Beiträge: 19.172

23.01.2014, 10:39:20 via App

Hallo!

Herzlich Willkommen hier bei uns im Forum!

Bitte bearbeite noch mal deinen Threadtitel gemäß unserer Regeln, damit auch klar wird worum es überhaupt geht.
Um den Threadtitel zu ändern musst du im ersten Posting auf "Bearbeiten" klicken. Zurzeit funktioniert das aber nur im Browser oder App Center, jedoch noch nicht mit der neuen App.
Danke.

Klaus
Das AndroidPIT Moderatoren und Administratoren Team

| LG Klaus |
| Google Nexus 6P - Dirty Unicorns | Google Nexus 6 - Dirty Unicorns |
| Das AndroidPITiden-Buch | Die Androiden-Toolbox | AndroidPIT-Regeln |

Antworten
Fabian Simon
  • Forum-Beiträge: 359

23.01.2014, 13:21:25 via Website

Hallo,
du musst den reciver noch registrieren.

1IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
2 bluetooth.startDiscovery();
3context.registerReceiver(receiver , filter);

Gruß
Fabian

— geändert am 23.01.2014, 13:22:02

Antworten
Peter Parker
  • Forum-Beiträge: 36

23.01.2014, 15:03:56 via Website

Hallo,
vielen Dank für die Antwort. Den Receiver habe ich auch schon registriert. Ich stelle mal mehr Code von mir rein:

1public class MainActivity extends Activity {
2
3 private Button suche;
4 private BluetoothAdapter btAd;
5 private Set<BluetoothDevice>devicesAr;
6 private ListView listV;
7 private ArrayAdapter ad;
8 private ArrayList arrayL;
9 private ArrayList<BluetoothDevice> devs;
10 private ArrayList<String> pairedDevs;
11 private IntentFilter filter;
12
13protected void onCreate(Bundle savedInstanceState) {
14 setContentView(R.layout.bluetooth);
15 listV = (ListView)findViewById(R.id.listV)
16
17 btA= BluetoothAdapter.getDefaultAdapter();
18 devs = new ArrayList<BluetoothDevice>();
19 pairedDevs = new ArrayList<String>();
20 devicesAr = btAd.getBondedDevices();
21 filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
22 registerReceiver(receiver, filter);
23
24 public void suche(View view) {
25 btAd.startDiscovery();
26 }
27
28private final BroadcastReceiver receiver = new BroadcastReceiver() {
29 public void onReceive(Context context, Intent intent) {
30 String action = intent.getAction();
31
32 if(BluetoothDevice.ACTION_FOUND.equals(action)){
33 BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
34 devs.add(device);
35 }
36 }

— geändert am 23.01.2014, 15:04:17

Antworten
Fabian Simon
  • Forum-Beiträge: 359

24.01.2014, 15:44:37 via Website

Also es empfielt sich aufjedenfall vor der Suche folgendes zu machen :
1if (bluetooth.isDiscovering()){
2 bluetooth.cancelDiscovery();
3 }

Dann lautet die Reihenfolge :
erst startDiscovery dann reciver registrieren.

1bluetooth.startDiscovery();
2IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
3con.registerReceiver(mReceiver, filter);

Sonst hab ich es von der Art und weiße auch so wie du...

Gruß
Fabian

Antworten
Peter Parker
  • Forum-Beiträge: 36

28.01.2014, 17:00:20 via Website

Funktioniert leider nicht. Warum
1con.registerReceiver(...)
und nicht
1registerReceiver(...)
?

— geändert am 28.01.2014, 17:00:52

Antworten
Fabian Simon
  • Forum-Beiträge: 359

29.01.2014, 08:49:04 via Website

con = Context.
Ich habe bei meinem Programm das Verbindung von Bluetooth in eine externe Klasse ausgelagert.

Deshalb con.
Gruß
Fabian

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

29.01.2014, 16:22:58 via Website

1con.registerReceiver(...)
2//und
3registerReceiver(...)
ist in deinem Fall das gleiche, da deine Activity von Context erbt und das keinen unterschied macht, was du schreibst.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Fabian Simon
  • Forum-Beiträge: 359

30.01.2014, 08:17:16 via Website

impjor
Einfach mal ein Log.d() benutzen.
Oder anfangen zu debuggen!

Antworten
impjor
  • Forum-Beiträge: 1.793

30.01.2014, 13:10:36 via App

Fabian Simon
impjor
Einfach mal ein Log.d() benutzen.
Oder anfangen zu debuggen!
Ist das nicht das Selbe bzw. ein Teil des Debuggens :)

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Fabian Simon
  • Forum-Beiträge: 359

30.01.2014, 13:34:23 via Website

impjor
Fabian Simon
impjor
bzw. ein Teil des Debuggens :)
Ja ein Teil von Debuggen.
Aber man kann ja auch mal die Kritische Stelle Zeile für zeile durchlaufen also Debuggen.
oder ?

Antworten