UPDATEAndroid 6.0 - Bluetooth - Nessun codice esiste per Action_Found trasmesso intento
ho provato molti codici, anche da esempi mostrati su internet. ognuno di loro segue il mio approccio. Dopo molte ore di test, sono giunto alla conclusione che su Android 6.0 non c'è possibilità di ottenere la scoperta bluetooth di dispositivi sconosciuti, possiamo solo recuperare quelli legati. Sono abbastanza sicuro che ci sia qualcosa con questa versione di Android.
se qualcuno sa come risolvere questo problema, sarei davvero grato a qualsiasi aiuto.
originale Messaggio
Il mio codice sta lavorando bene, ma nessun dispositivo ottenere trovato. ricevo solo DISCOVERY_STARTED e DISCOVERY_FINISHED, quindi non vengono trovati dispositivi, ma tramite l'app di sistema questi dispositivi vengono rilevati.
Questo è il codice della mia applicazione, spero che possa essere d'aiuto.
@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();
}
}
ho già preso impostare le autorizzazioni:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Possibile duplicato di questa domanda [qui] (http://stackoverflow.com/questions/32656510/register-broadcast-receiver-dynamically-does-not-work-bluetoothdevice-action-f) –
@EdwardAlexander i don ' Penso di sì, ho letto quella domanda e il mio metodo onReceive viene chiamato correttamente. il problema è che non ricevo intenti ACTION_FOUND, solo DISCOVERY_STARTED e DISCOVERY_FINISHED. Nessun dispositivo viene trovato, ma usando l'applicazione di sistema posso recuperare l'elenco dei dispositivi disponibili. Perché? –
Dovresti aver specificato chiaramente che stai usando Marshmallow, è tutta un'altra storia, qui controlla questo: [Bluetooth Discovery Marshmallow] (http://stackoverflow.com/questions/33052811/since-marshmallow-update-bluetooth-discovery -using-bluetoothadapter-getdefaultad) –