2016-04-08 24 views
1

Ich lerne gerade Android. Ich habe versucht, die Funktion zu implementieren, die nach Bluetooth-Geräten sucht. Ich kann alle zuvor gekoppelten Geräte auflisten, aber ich kann keine neuen Geräte finden.Bluetooth-Scan gibt nichts zurück

Berechtigungen werden in AndroidManifest.xml festgelegt.

Hier ist mein Code:

public void listDiscoverableDevices(boolean status) { 
    // Create a BroadcastReceiver for ACTION_FOUND 
    mBluetoothAdapter.cancelDiscovery(); 
    mArrayAdapter.clear(); 
    mDisplay.setText("Search"); 
    mReceiver = new BroadcastReceiver() { 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 
      //BluetoothDevice. 
      if(BluetoothDevice.ACTION_FOUND.equals(action)) { 
       BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
       mArrayAdapter.add(device.getAddress()); 
      } else if(BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) { 
       //mDisplay.setText(action); 
       mArrayAdapter.add(action); 
      } else if(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { 
       //mDisplay.setText(action); 
       mArrayAdapter.add(action); 
      } 
     } 
    }; 

    // Register the BroadcastReceiver 
    IntentFilter filter = new IntentFilter(); 
    filter.addAction(BluetoothDevice.ACTION_FOUND); 
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED); 
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); 
    registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy 

    if(!mBluetoothAdapter.startDiscovery()) { 
    mDisplay.setText("Discover failed!"); 
    } 
} 

Es scheint mir, dass die BluetoothDevice.ACTION_FOUND Aktion nie empfangen wird. Ich kämpfe seit zwei Tagen damit. Irgendeine Idee?

Danke,

Antwort

0

Ich brauchte zwei Tage. Heute habe ich endlich herausgefunden, warum mein Programm beim ersten Mal nicht funktioniert hat. Ab Android 6.0 benötigen Sie entweder android.permission.ACCESS_FINE_LOCATION oder android.permission.ACCESS_FINE_LOCATION Berechtigung zum Scannen nach entfernten Bluetooth-Geräten. Und möglicherweise müssen Sie zu "Einstellungen" -> "Apps" -> IhreApp -> "Berechtigungen" gehen, um die Standortdienstberechtigung zu aktivieren. Oder ich denke, Sie können die Erlaubnis auch programmatisch anfordern.

+0

Alter, du hast mir den Tag gerettet! – psv

+0

Ich bin froh, dass es geholfen hat :) – Booo