+ Antworten
Ergebnis 1 bis 10 von 10

Thema: Probleme bei automatisierter Bluetooth Discovery

  1. #1
    User Halbes Megabyte Themenstarter
    Avatar von Zombiepriester
    Registriert seit
    16.05.2013
    Fachbeiträge
    683
    Genannt
    18 Post(s)
    Hallo mal wieder
    Ich möchte per App Verbindungen mit Bluetooth herstellen, dazu muss ich aber zu erst Geräte in der Nähe finden. Über das System an sich, finde ich mein Testgerät(Laptop) wunderbar, aber meine App findet irgendwie gar nichts. Für das Discovern hab ich folgenden Code nach dem offiziellen Tutorial benutzt. Was mach ich falsch?
    Java Code:
    1.  
    2. public static void sucheHosts(MainActivity a, final ArrayList<BluetoothDevice> devices) {
    3.         bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    4.         if (bluetoothAdapter == null) {
    5.             Log.i("BTVerbindung", "Kein Bluetooth");
    6.         }
    7.         if (!bluetoothAdapter.isEnabled()) {
    8.             bluetoothAdapter.enable();
    9.         }
    10.         mReceiver = new BroadcastReceiver() {
    11.             public void onReceive(Context context, Intent intent) {
    12.                 String action = intent.getAction();
    13.                 if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
    14.                 } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
    15.                 } else if (BluetoothDevice.ACTION_FOUND.equals(action)) {
    16.                     BluetoothDevice device = (BluetoothDevice) intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
    17.                     Log.i("BTVerbindung", "Found device " + device.getName());
    18.                 }
    19.             }
    20.         };
    21.         if (bluetoothAdapter.isDiscovering())
    22.             bluetoothAdapter.cancelDiscovery();
    23.         IntentFilter filter = new IntentFilter();
    24.         filter.addAction(BluetoothDevice.ACTION_FOUND);
    25.         filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
    26.         filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
    27.         a.registerReceiver(mReceiver, filter);
    28.         bluetoothAdapter.startDiscovery();
    29.     }
    Java Code:
    1.  
    2. BluetoothChatHandler.sucheHosts(this, gefundeneGeräte);
    3.         new Thread(new Runnable(){
    4.             @Override
    5.             public void run() {
    6.                 while(gefundeneGeräte.size() <= 0){}
    7.                 if(gefundeneGeräte.size() > 0){
    8.                     ListView liste = (ListView) findViewById(R.id.listView);
    9.                     for(final BluetoothDevice d : gefundeneGeräte){
    10.                         Button textview = new Button(liste.getContext());
    11.                         textview.setText(d.getName()+" "+d.getAddress());
    12.                         textview.setOnClickListener(new View.OnClickListener(){
    13.                             @Override
    14.                             public void onClick(View v) {
    15.                                 BluetoothChatHandler.connectToHost(d);
    16.                             }
    17.                         });
    18.                         liste.addFooterView(textview);
    19.                     }
    20.                     setContentView(R.layout.verbinden);
    21.                 }else{
    22.                     Log.i("BTVerbindung", "Keine geräte gefunden");
    23.                 }
    24.             }
    25.         }).start();

  2. #2
    User Viertel Megabyte Avatar von TMII
    Registriert seit
    19.02.2015
    Fachbeiträge
    313
    Genannt
    31 Post(s)
    Hast du die Permissions für Blutooth im Manifest deklariert/eingeholt?
    Code:
    <manifest ... >
      <uses-permission android:name="android.permission.BLUETOOTH" />
     <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
      ...
    </manifest>
    Die erste ist für Blutooth allgemein, die zweite für die Blutooth Suche.

    Seit Android 6.0 bzw. API 23 musst du dir die Permissions zusätzlich zum Installationszeitpunkt noch zur Laufzeit einholen.
    https://developer.android.com/traini...l#perm-request
    Code:
    _/_/_/_/_/--_/------_/--_/_/_/--_/_/_/
    ---_/------_/_/--_/_/----_/------_/   
    --_/------_/--_/--_/----_/------_/    
    -_/------_/------_/----_/------_/     
    _/------_/------_/--_/_/_/--_/_/_/

  3. #3
    User Halbes Megabyte Themenstarter
    Avatar von Zombiepriester
    Registriert seit
    16.05.2013
    Fachbeiträge
    683
    Genannt
    18 Post(s)
    Im Manifest hab ich die Permissions gesetzt, das verlangt Androidstudio ja sogar von einem, bevor man starten kann. Ich benutz API 21, also brauch ich das mit der Laufzeit nicht.

  4. #4
    User Viertel Megabyte Avatar von TMII
    Registriert seit
    19.02.2015
    Fachbeiträge
    313
    Genannt
    31 Post(s)
    Das ist mir neu (?).
    Nichts desto trotz kann ich mir den Code frühestens am Montag genau anschauen.
    Vielleicht weiß ja wer anderst weiter.
    Code:
    _/_/_/_/_/--_/------_/--_/_/_/--_/_/_/
    ---_/------_/_/--_/_/----_/------_/   
    --_/------_/--_/--_/----_/------_/    
    -_/------_/------_/----_/------_/     
    _/------_/------_/--_/_/_/--_/_/_/

  5. #5
    Frequent User Halbes Megabyte Avatar von mogel
    Registriert seit
    01.08.2013
    Ort
    Geheimversteck
    Fachbeiträge
    654
    Genannt
    93 Post(s)
    Zitat Zitat von Zombiepriester Beitrag anzeigen
    Ich benutz API 21, also brauch ich das mit der Laufzeit nicht
    ich kann mir das gar nicht so richtig vorstellen - das wäre eine Sicherheitslücke. Dann brauch ich nur API21 verwenden und der Benutzer wird nicht nochmal zu Sicherheit gefragt - und das unter Android 6. Klar Abwärtskompatibilität & so.....
    Internal Development and Investment Optimization Trainer
    Probleme bei automatisierter Bluetooth Discovery

    TreeDo - die clevere ToDo-Liste - 2:0

  6. #6
    User Halbes Megabyte Themenstarter
    Avatar von Zombiepriester
    Registriert seit
    16.05.2013
    Fachbeiträge
    683
    Genannt
    18 Post(s)
    Aber wenn ich in Androidstudio API 21 einstelle, kann ich ja nicht mal die Methoden bestimmter Klassen nutzen, weil es die anscheinend noch nicht gibt.

  7. #7
    User Viertel Megabyte Avatar von TMII
    Registriert seit
    19.02.2015
    Fachbeiträge
    313
    Genannt
    31 Post(s)
    Zitat Zitat von mogel Beitrag anzeigen
    ich kann mir das gar nicht so richtig vorstellen - das wäre eine Sicherheitslücke. Dann brauch ich nur API21 verwenden und der Benutzer wird nicht nochmal zu Sicherheit gefragt - und das unter Android 6. Klar Abwärtskompatibilität & so.....
    Das ist exakt wie das funktioniert. Stattdessen musst du zum Installationszeitpunkt zustimmen als während der Laufzeit gefragt zu werden.
    Zur Laufzeit kannst du dir die Berechtigung auch "irgendwann" holen und dann für alles immer verwenden auch wenn der Nutzer in einem anderen Kontext zugestimmt hat, da man nicht mehrmals zustimmen muss.
    Klar ist die Idee dass der Nutzer kurz vor Aufruf der Funktion zustimmt...

    Fun Fact: Berechtigungen kann man auch an x beliebige Programme übertragen.
    Wenn deine App (z.B. Facebook) Fotoberechtigung als auch Internetberechtigung anfordert und dann eine Fotoapp anfordert zum Bilder schießen und hochladen und du als Nutzer wählst im Dialog irgendeine drittanbieter App aus...
    Das wurde nicht ganz durchdacht.
    Code:
    _/_/_/_/_/--_/------_/--_/_/_/--_/_/_/
    ---_/------_/_/--_/_/----_/------_/   
    --_/------_/--_/--_/----_/------_/    
    -_/------_/------_/----_/------_/     
    _/------_/------_/--_/_/_/--_/_/_/

  8. #8
    User Halbes Megabyte Themenstarter
    Avatar von Zombiepriester
    Registriert seit
    16.05.2013
    Fachbeiträge
    683
    Genannt
    18 Post(s)
    Aber du sagtest ja diese Änderungen kommen mit API 23. Aber da ich weder im Editor damit arbeite, weder auf dem Testgerät installiert habe, kann mein Problem überhaupt daran liegen?

  9. #9
    User Viertel Megabyte Avatar von TMII
    Registriert seit
    19.02.2015
    Fachbeiträge
    313
    Genannt
    31 Post(s)
    Das galt mogel das es genau so funktioniert wie er sich das nicht erhofft hatte.
    Aber ja das betrifft dich dann nicht.
    Code:
    _/_/_/_/_/--_/------_/--_/_/_/--_/_/_/
    ---_/------_/_/--_/_/----_/------_/   
    --_/------_/--_/--_/----_/------_/    
    -_/------_/------_/----_/------_/     
    _/------_/------_/--_/_/_/--_/_/_/

  10. #10
    User Halbes Megabyte Themenstarter
    Avatar von Zombiepriester
    Registriert seit
    16.05.2013
    Fachbeiträge
    683
    Genannt
    18 Post(s)
    Woran könnte das Problem dann liegen?

+ Antworten Thema als "gelöst" markieren

Direkt antworten Direkt antworten

Nenne die Wurzel aus Einhundertvierundvierzig (Zahl eingeben) !

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 24.07.2016, 10:24
  2. (Android) Bluetooth + binär!=String + SD-Card
    Von WerWeißWas im Forum Android
    Antworten: 18
    Letzter Beitrag: 23.07.2016, 10:55
  3. Messtechnik und iOS - Bluetooth SPP
    Von ZickZack im Forum iOS
    Antworten: 0
    Letzter Beitrag: 22.07.2016, 12:26
  4. App Entwickler/in für Android und iOS mit Bluetooth, BLE und WLAN Anbindung
    Von campusjaeger im Forum Angebote von Agenturen
    Antworten: 0
    Letzter Beitrag: 20.07.2016, 13:54
  5. Antworten: 0
    Letzter Beitrag: 20.09.2014, 09:22

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •