2012-11-29 4 views
11

Ho già scoperto l'altro dispositivo e l'ho già abbinato. Almeno ce l'ho nella lista dei dispositivi associati sul mio telefono Android.Come rilevare che un dispositivo già scoperto e associato è disponibile?

Ora su BluetoothSocket.connect() possono verificarsi due problemi:

  1. Il dispositivo remoto è spento o non disponibile
  2. Il dispositivo remoto dimenticato l'abbinamento perché può accoppiare un solo altro dispositivo ed è stato associato a un altro telefono

    => Quindi la connessione non riesce dopo un determinato timeout.

E 'possibile verificare che un già accoppiato dispositivo è davvero disponibile e ricorda che è stato accoppiato con il telefono senza la connessione ad esso? Non si tratta di rilevare se un dispositivo è connesso. Associato e visibile non è uguale a quello connesso.

+0

Hai controllato i seguenti collegamenti: http://stackoverflow.com/questions/14228289/android-device-bluetooth-pairing http://stackoverflow.com/questions/6675208/to-discover-and-pair-bluetooth -Dispositivi forse puoi avere qualche idea qui. –

risposta

3

Sono informato ma non è possibile per il tuo dispositivo sapere che un altro è nel raggio d'azione, tranne nel tentativo di connettersi ad esso. E, per sapere se il dispositivo remoto ha rimosso l'associazione, dovrebbe chiederglielo, ad es. connettersi e vedere se richiede l'associazione quindi.

Altri modi potrebbero essere l'utente per confermare questi prima di connettersi, o forse utilizzare un canale esterno TCP/IP o WiFi o NFC. Se nessuno di quei poteri magici fosse l'unica alternativa. : -,)

1
  1. Ricordare che il dispositivo collegato era in realtà un po 'semplice. Una volta eseguito correttamente il binding su un dispositivo, viene visualizzato l'oggetto BluetoothDevice. puoi chiedere il suo indirizzo MAC univoco con getAddress(). Una volta che hai l'indirizzo salvalo su una preferenza condivisa. questo copre il "è stato abbinato" - la prossima volta che usiamo il BluetoothAdapter e ricevere l'elenco dei dispositivi associati possiamo cercare tra loro l'indirizzo del dispositivo salvato.
  2. Ora che conosciamo l'indirizzo esatto del dispositivo, come possiamo sapere se è "realmente disponibile"? Bene, se ti basta provare e scoprire il dispositivo (startDiscovery()) per verificare se è disponibile nel livello "scopri", allora conosci il trucco (elenco 1). Se hai scoperto che il dispositivo è individuabile e devi testare il dispositivo per la piena connettività, dovrai aprire un nuovo socket e vedere se tutto va liscio.

Nella mia esperienza ho trattare 3 diverse possibili situazioni di dispositivi BT:

  1. dispositivo non è vincolata
  2. dispositivo destinato - ma non connesso
  3. dispositivo legato - e collegato
+3

Purtroppo questo funziona solo se l'altro dispositivo è rilevabile – ocramot

0

È possibile ottenere un elenco di dispositivi già associati e incrociarli verificandoli con i dispositivi rilevabili correnti. Ciò consentirà di disporre di dispositivi già associati che sono in modalità rilevabile.

Ma per dispositivi non scoperti obbligatori è necessario connettersi con loro.Prova a creare una connessione socket tra di loro se i dati inviati correttamente dispositivo remoto è attivo.

Inoltre è possibile utilizzare getBondState() del dispositivo remoto per verificare lo stato unito e registrare il ricevitore ACTION_BOND_STATE_CHANGED per ottenere la richiamata delle modifiche dello stato unito.

Problemi correlati