Autore Topic: Sequenza Bluetooth  (Letto 381 volte)

Offline wlf

  • Utente normale
  • ***
  • Post: 367
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Sequenza Bluetooth
« il: 28 Ottobre 2014, 18:12:45 CET »
0
Salve,
sto riscontrando problemi con la sequenza di eventi relativi al BluetoothDevice.

Ho un BroadcastReceiver che intercetta le seguenti azioni:

Codice: [Seleziona]
                                filter = new IntentFilter();
                                filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
                                filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
                                filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
                                registerReceiver(receiver, filter);

Se ho un dispositivo già associato alla connect() una volta connesso rilevo appunto l'azione BluetoothDevice.ACTION_ACL_CONNECTED.
Nel caso che il dispositivo non sia ancora associato invece mi passa per la BluetoothDevice.ACTION_BOND_STATE_CHANGED, prima nella BluetoothDevice.BOND_BONDING, poi mi attenderei che mi passi per la BluetoothDevice.BOND_BONDED, invece a sorpresa mi passa per la BluetoothDevice.ACTION_ACL_CONNECTED senza che io abbia invocato la connect(). :(

Riassumendo:
1) Con dispositivo già associato con la BluetoothSocket.connect() mi passa per l'azione
BluetoothDevice.ACTION_ACL_CONNECTED

2) Con dispositivo da associare con la "createBond" mi passa per
BluetoothDevice.BOND_BONDING
BluetoothDevice.ACTION_ACL_CONNECTED
BluetoothDevice.BOND_BONDED
BluetoothDevice.ACTION_ACL_DISCONNECTED

Perché nel secondo caso mi passa per una BluetoothDevice.ACTION_ACL_CONNECTED e successiva ACTION_ACL_DISCONNECTED anche se realmente non ho fatto nessuna connect() e successiva close()?
E' normale questa sequenza oppure qualcuno è sicuro che la ACTION_ACL_CONNECTED e ACTION_ACL_DISCONNECTED si verifichino solamente con una connect() e close()?

Come faccio a discriminare quando una connect è frutto di una reale connect() e quando invece è causata da un "createBond" (pairing)?
« Ultima modifica: 31 Ottobre 2014, 16:08:26 CET da wlf »