Utilizzando sia Android 4.3/Samsung BLE 2.0 SDK, si osserva che quando una periferica è spenta, l'SDK riceverà onConnectionStateChange (DEVICE_DISCONNECTED) immediatamente o dopo un ritardo di ~ 20s. Dalla mia esperienza dipende dall'implementazione periferica, alcuni di loro hanno provato a segnalare che sono stati disattivati e altri no, quindi l'SDK deve attendere i 20 secondi per il timeout.Spegnere la periferica causando un comportamento imprevisto
Per rimuovere questo comportamento, ho provato a utilizzare un timer per verificare se riesco a leggere una determinata caratteristica. Se la lettura è scaduta, chiamerò disconnect (Android 4.3)/cancelConnection (Samsung) per terminare la connessione. La chiamata stessa ha esito positivo e il callback onConnectionStateChange restituisce uno stato GATT_SUCCESS. Poi ho acceso la periferica e mi sono collegato immediatamente, ho scoperto i servizi e ho riscontrato dei problemi quando ho provato a leggere/scrivere/notificare qualsiasi notifica. Usando LightBlue in iOS posso confermare che la periferica non è connessa.
Dopo esattamente 20 secondi dallo spegnimento della periferica, riceverò un callback DEVICE_DISCONNECTED. Mi connetto di nuovo in seguito, e tutto funziona bene.
Ci sono due domande: 1. Dovremmo connetterci alla periferica durante il ritardo di 20 secondi? 2. C'è un modo per ricevere una notifica quando una periferica è spenta?
Grazie in anticipo.
Puoi approfondire un po 'di più su cosa sta succedendo durante il ritardo di 20 secondi. Non sembra logico che io possa chiamare la disconnessione durante il periodo senza ricevere errori. – reTs