Appelle déconnexion () et close () par la suite la bonne approche dans l'application BLE Android?

dj bmx:

Je travaille sur la mise en œuvre d' une application Android qui se connecte à des appareils BLE , mais le manque de documentation me tue. Rien ne semble fonctionner de la même façon deux fois si je lance l'application une fois qu'il pourrait fonctionner , mais la prochaine fois arrête quelque part (aucune idée) mais je un peu venu à la conclusion que je pourrais avoir pas utilisé disconnect()et close()dans le bon ordre.

Après disons une déconnexion I erreur d'appel () d'abord:

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

j'appelle close ():

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

Est - ce la bonne façon de le faire ou faux? S'il vous plaît être conscient que je fais appel scanLeDevice(true);juste après la déconnexion mais close()est appelé que je pense est juste « de finition » tout et arrête le droit de balayage?

Emil:

Lorsque vous créez un BluetoothGattobjet en appelant connectGattun BluetoothDevice, vous prétendez l' un des 32 (dans la version actuelle Android) emplacements disponibles dans la pile Bluetooth.

Sur cet objet , vous pouvez maintenant appeler connectet disconnectde changer l'état du « but » si Android devrait essayer de garder une connexion à l'appareil ou non. Jusqu'à ce que vous appelez disconnect, Android sera ( pour toujours) essayer de se connecter à l'appareil et se reconnecter automatiquement à l'appareil si la connexion tombe pour une raison quelconque. L' appel à connectnouveau après disconnectil sera essayer de vous connecter à nouveau.

Note: la mise autoConnectà falsela première connectGattappel fixera un délai d' attente initial pour la première connexion tentative implicite (généralement 30 secondes), et si l'appareil se connecte et la connexion des gouttes plus tard, il essaiera pas automatiquement de se reconnecter.

Ainsi , l' BluetoothGattobjet peut être dans l'état « déconnecté » , mais encore prendre jusqu'à un des 32 emplacements dans la pile Bluetooth. Lorsque vous appelez close, vous relâchez toutes les ressources de l' BluetoothGattobjet et revenir à l'emplacement de la pile Bluetooth. Un gros signifie donc implicitement également la déconnexion. Pour contourner potentiellement certains appareils Android bogué, vous pouvez appeler disconnectsur l' BluetoothGattobjet avant close. Notez qu'une fois que vous avez appelé close, vous ne pouvez pas appeler d'autres méthodes sur cet BluetoothGattobjet.

Remarque: la désactivation des moyens Bluetooth détruire tous BluetoothGattautomatiquement des objets.

Retour à votre question, je ne comprends pas vraiment ce que votre analyse BLE doit faire avec connexion / déconnexion / fermeture. La numérisation est totalement séparé des connexions et des BluetoothGattobjets et il n'y a aucun problème d'être connecté et effectuer une analyse en même temps. Pour arrêter l'analyse, appel stopScanà la BluetoothLeScanner.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=371005&siteId=1
conseillé
Classement