UPDATEAndroid 6.0 - Bluetooth - kein Code existiert für Action_Found Absicht übertragen
ich viele Codes versucht, auch aus den Beispielen im Internet gezeigt. Jeder von ihnen folgt meinem Ansatz. Nach vielen Teststunden kam ich zu dem Schluss, dass es unter Android 6.0 keine Möglichkeit gibt, Bluetooth-Discovery von unbekannten Geräten zu erreichen, wir können nur die verbundenen Geräte abrufen. Ich bin mir ziemlich sicher, dass es etwas mit dieser Android-Version gibt.
Wenn jemand weiß, wie das zu beheben ist, würde ich jede Hilfe sehr schätzen.
Original-Beitrag
Mein Code funktioniert gut, aber keine Geräte gefunden zu werden. Ich bekomme nur DISCOVERY_STARTED und DISCOVERY_FINISHED, also werden keine Geräte gefunden, aber mit der System-App werden diese Geräte gefunden.
Dies ist der Code meiner Anwendung, hoffe, es kann helfen.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
bluetoothAdapter= BluetoothAdapter.getDefaultAdapter();
//other stuff...
IntentFilter filter=new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(myreceiver,filter);
}
final BroadcastReceiver myreceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i("test","RECEIVED: "+ action);
if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
}
else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
}
if(BluetoothDevice.ACTION_FOUND.equals(action))
{
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Log.i("test", device.getName() + "\n" + device.getAddress());
}
}};
public void scanDevices(View v){
if (bluetoothAdapter.isEnabled()){
bluetoothAdapter.startDiscovery();
}
}
ich bereits habe Berechtigungen:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Mögliche Duplikate dieser Frage [hier] (http://stackoverflow.com/questions/32656510/register-broadcast-receiver-dynamical-does-not-work-bluetoothdevice-action-f) –
@EdwardAlexander ich don ' Ich denke, ich lese diese Frage und meine onReceive-Methode wird korrekt aufgerufen. Das Problem ist, dass ich keine ACTION_FOUND Absichten bekomme, nur DISCOVERY_STARTED und DISCOVERY_FINISHED. Es werden keine Geräte gefunden, aber mithilfe der Systemanwendung kann ich die Liste der verfügbaren Geräte abrufen. Warum? –
Sie sollten klar angegeben haben, dass Sie Marshmallow verwenden, das ist eine ganz andere Geschichte, hier überprüfen Sie dies: [Bluetooth Discovery Marshmallow] (http://stackoverflow.com/questions/33052811/since-marshmallow-update-bluetooth-discovery -using-bluetoothadapter-getdefaultad) –