Está llamando desconexión () y close () posteriormente el enfoque correcto en BLE Android aplicación?

dj BMX:

Estoy trabajando en la implementación de una aplicación para Android que se conecta a dispositivos BLE, pero la falta de documentación apropiada me está matando. Nada parece estar funcionando de la misma manera dos veces si funciono con la aplicación una vez que podría funcionar, pero la próxima vez que se detiene en algún lugar (ni idea de dónde) pero poco llegó a una conclusión que yo no he estado usando disconnect()y close()en el orden correcto.

Después digamos una desconexión de llamada error de E () en primer lugar:

 public void disconnect() {
    mScanning = true;
    mConnected = false;
    startedConnect = false;
    if (mBluetoothAdapter == null || mBluetoothGatt == null) {
        scanLeDevice(true);
        return;
    }
    mBluetoothGatt.disconnect();
    scanLeDevice(true);
}

entonces yo llamo close ():

public void close() {
    if (mBluetoothGatt == null) {
        return;
    }
    mBluetoothGatt.close();
    mBluetoothGatt = null;
}

Es esta la forma correcta de hacerlo o no? Tenga en cuenta que yo estoy llamando a scanLeDevice(true);la derecha después de desconectar pero entonces close()se llama que creo que es justo "terminando" todo y se detiene el derecho de exploración?

Emil:

Cuando se crea un BluetoothGattobjeto llamando connectGatten una BluetoothDevice, usted afirma uno de los 32 (en la actual versión de Android) ranuras disponibles en la pila de Bluetooth.

En este objeto ahora se puede llamar connecty disconnectcambiar el estado de la "meta" si Android debe tratar de mantener una conexión con el dispositivo o no. Hasta que llame disconnect, Android (para siempre) intentará conectar con el dispositivo y vuelva a conectar automáticamente al dispositivo si la conexión se interrumpe por cualquier razón. Llamando connectde nuevo después disconnectlo hará intente conectarse de nuevo.

Nota: la configuración autoConnectde falsela primera connectGattllamada se establecerá un tiempo de espera inicial para el primer intento de conexión implícita (generalmente 30 segundos), y si se conecta el dispositivo y la conexión se corta después, no intentará volver a conectarse automáticamente.

Por lo que el BluetoothGattobjeto puede estar en el estado "desconectado", pero siguen ocupando una de las 32 ranuras de la pila Bluetooth. Cuando se llama close, se libera todos los recursos para el BluetoothGattobjeto y regresa a la ranura de la pila de Bluetooth. Un cierre por lo tanto, implícitamente también significa desconexión. Para solucionar potencialmente algunos dispositivos Android con errores, se podría llamar disconnecten el BluetoothGattobjeto antes close. Tenga en cuenta que una vez que haya llamado close, no se puede llamar a cualquier otro método de ese BluetoothGattobjeto.

Nota: apagar mediante Bluetooth destruyendo todos los BluetoothGattobjetos de forma automática.

Volviendo a su pregunta, yo realmente no entender lo que su digitalización BLE tiene que ver con la conexión / desconexión / cierre. La exploración es totalmente independiente de las conexiones y BluetoothGattlos objetos y no hay problemas con el que está conectado y la realización de una exploración al mismo tiempo. Para detener la exploración, llamada stopScanen el BluetoothLeScanner.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=371009&siteId=1
Recomendado
Clasificación